E.U.I.TI. EXAMEN 12 de Septiembre 2002
SOLUCIÓN
FUNDAMENTOS DE INFORMATICA - Iº PARTE (3 puntos) Nombre: ...
Especialdad:...
NOTA:
Para realizar esta parte del examen tenéis 45 minutos.
Estas preguntas se darán por buenas o malas.
1. (0,25 puntos) ¿A que número binario es equivalente el decimal 138?
10001010
2. (0,25 puntos) Indica si son ciertas o falsas las siguientes afirmaciones:
a. El documento que se encuentra en la papelera de reciclaje no se puede recuperar puesto que está borrado FALSA
b. La codificación binaria de dos números decimales distintos puede ser la misma FALSA
3. (0,25 puntos) En general y atendiendo al sentido común relaciona los siguientes ficheros con el contenido que tendrían:
c. Fitx1.doc (2) d. Fitx2.pas (3) e. Fitx3.html (1) f. Fitx4.exe (4)
1. Formato texto especial de Internet 2. Documento creado usando Word 3. Programa escrito en lenguaje Pascal
4. Fichero que contiene un programa ejecutable
4. (0,25 puntos) Clasifica las siguientes memorias auxiliares por su capacidad de almacenamiento (de menor a mayor)
g. Disquete h. CD-Rom
i. DVD j. Disco duro
Disco duro >DVD >CD-Rom > Disquete
5. (0,5 puntos) Debido a la nueva especialidad que se va a implantar el próximo curso,
"Obras Públicas", necesitamos crear un directorio llamado "jiape" que contenga el fichero llamado "ejercicios.doc", situado dentro del directorio "jiame". Escribir los dos comandos MS-DOS necesarios para pasar del estado E1 al estado E2, suponiendo que estamos en la raíz G y no podemos movernos de ella.
E1 E2
G>md jia\jiape
G>copy G:\jia\jiame\ejercicios.doc G:\jia\jiape\ejercicios.doc G
jia
jiaqe jiame jiaoe
ventas.pas ejercicios.doc Pisos.pas ...
jiaie
G
jia
jiaqe jiame jiaoe
ventas.pas ejercicios.doc Pisos.pas ...
jiaie jiape
ejercicios.doc
6. (0,5 puntos) Escribe con un único if:
k. ¿son los valores de las variables enteras N1, N2 y N3 distintos?
if N1<>N2 and N2<>N3 then
l. ¿son los valores de las variables N1 y N2 positivos o es N3 par?
if (N1>0 and N2>0) and (N3 mod 2=0) then
7. (0,5 puntos) ¿Cómo reescribirías el trozo de código que utiliza un WHILE por uno que utilice un FOR?
...
read(car);
while car<>’.’ Do begin
if ('A'<=car and car<=’Z’) or ('a'<=car and car<=‘z’) then write (car, ‘ es letra’)
else write (car, ‘ es un caracter especial’);
read(car);
end;
...
FOR TO DO
BEGIN
NO SE PUEDE
END;
8. (0,5 puntos) Indicar cuál es la salida por pantalla de del siguiente programa:
Program examen;
Uses wincrt;
Var empieza, fin, pot, ind:integer;
Begin
empieza:=1; fin:=50; pot:=0;
For ind:=empieza to fin do Begin
If ind = (2^pot)1 then Begin
Writeln(pot, ‘ es el ‘, ind);
pot:=pot+1;
End;
End;
End.
0 es el 1 1 es el 2 2 es el 4 3 es el 8 4 es el 16 5 es el 32
1 Representa 2 elevado a pot, nosotros matemáticamente lo representaríamos como: 2pot
E.U.I.TI. EXAMEN 12 de septiembre 2002
SOLUCIÓN
FUNDAMENTOS DE INFORMATICA 2º PARTE (7 puntos)
La compañía de autobuses EUROPA quiere realizar las estadísticas de los viajes realizados el año 2001. Esta compañía tiene una flota de 70 autobuses que parten de Donostia para realizar viajes por toda Europa ofreciendo 80 recorridos diferentes. Es de tener en cuenta, que un autobús no tiene porqué realizar todos los recorridos posibles, e incluso puede ocurrir que algún autobús no realice ningún recorrido (porque está viejo, en el taller, ...). Para cada autobús nos dirán qué recorridos ha realizado y cuántas veces lo ha realizado durante ese año. Esta información nos vendrá dada en tripletas (autobús, recorrido, número de veces realizado) y un 0 como valor de autobús nos indicará el final de la entrada de datos dándonos igual las valores que nos introducen como recorrido y número de veces realizado. Por cada autobús y recorrido puede venir más de una tripleta, con lo que tendreís que acumular el número de veces que ha realizado el recorrido.
La entrada de datos será de la siguiente forma (en negrita los datos introducidos por el usuario):
Dame autobús, recorrido y número de veces: 3 5 324 Dame autobús, recorrido y número de veces: 13 6 45 Dame autobús, recorrido y número de veces: 3 8 17 Dame autobús, recorrido y número de veces: 3 15 3 Dame autobús, recorrido y número de veces: 25 75 42 Dame autobús, recorrido y número de veces: 7 19 132 Dame autobús, recorrido y número de veces: 13 6 32 ....
Dame autobús, recorrido y número de veces: 0 7 0
Además de esta información también nos darán los kilómetros de cada uno de los posibles recorridos de la compañía (en negrita los datos introducidos por el usuario):
Kilómetros del recorrido 1: 478 Kilómetros del recorrido 2: 721 Kilómetros del recorrido 3: 3290 ...
Kilómetros del recorrido 80: 2843
Teniendo esta información se pide calcular los siguiente:
1. ¿Cuántas veces se ha realizado cada recorrido?
2. ¿Cuál es el recorrido que se ha realizado más veces y en cuantas ocasiones se ha hecho?
3. ¿Cúal es el autobús que ha realizado menos kilómetros?
4. ¿Cúantos recorridos diferentes ha realizado cada autobús y cuáles han sido estos?.
Ejemplo:
El autobús 1 ha hecho 8 recorridos diferentes y son el 1, 2, 8, 17, 43, 65, 78, 80 El autobús 2 ha hecho 4 recorridos diferentes y son el 5, 13, 22, 28
El autobús 3 ha hecho 2 recorridos diferentes y son el 33, 77 ...
El autobús 70 ha hecho 1 recorridos diferentes y son el 7
program BusesEuropa;
uses wincrt;
const NumBuses=7; NumRecorridos=4;
type Mat=array [1..NumBuses,1..NumRecorridos] of Integer;
TauB= array [1..NumBuses] of Integer;
TabR= array [1..NumRecorridos] of Integer;
var Europa:Mat;
KMRecorridos:TauB;
IbilKM,IdasYVueltas:TabR;
B,I,MaxR,MaxRBusKMmin,Num,Z:Integer;
begin
{Inicializacion}
for B:=1 to NumBuses do for I:=1 to NumRecorridos do Europa[B,I]:=0;
{Lectura y grabacion de los datos}
writeln('Da tripletas. Para acabar, el primero de la tripleta debe ser 0');
write('Dame autobus, recorrido y numero de veces: ');
readln(B,I,Z);
while (B<>0) do begin
if Europa[B,I]=0 then Europa[B,I]:=Z
else Europa[B,I]:= Europa[B,I]+Z; {Acumula!}
write('Dame autobus, recorrido y numero de veces: ');
readln(B,I,Z);
end;
for B:=1 to NumBuses do begin
for I:=1 to NumRecorridos do write(Europa[B,I]:4);
writeln;
end;
for I:=1 to NumRecorridos do begin
write('Kilometros del ',I,' recorrido: ');
readln(IbilKM[I]);
end;
MaxR:=1;
for I:=1 to NumRecorridos do begin
IdasYVueltas[I]:=0;
for B:=1 to NumBuses do
IdasYVueltas[I]:=IdasYVueltas[I]+Europa[B,I];
writeln('Numero de veces que se ha repetido el recorrido ',I,':', IdasYVueltas[I]);
if IdasYVueltas[MaxR]<IdasYVueltas[I] then MaxR:=I;
end;
write('El recorrido ´mas frecuente es el ',MaxR,' habiendose repetido ');
writeln(IdasYVueltas[MaxR],' veces.');
writeln;
MaxRBusKMmin:=1;
for B:=1 to NumBuses do begin
KMRecorridos[B]:=0;
for I:=1 to NumRecorridos do
KMRecorridos[B]:=KMRecorridos[B]+Europa[B,I]*IbilKM[I];
if KMRecorridos[B]<KMRecorridos[MaxRBusKMmin] then MaxRBusKMmin:=B;
end;
writeln('El autobus que ha realizado menos Kms es:', MaxRBusKMmin);
for B:=1 to NumBuses do begin
Num:=0;
for I:=1 to NumRecorridos do
if Europa[B,I]<>0 then Num:=Num+1;
write('El ', B, ' bus ha hecho ', Num,' recorridos diferentes y son el ');
for I:=1 to NumRecorridos do if Europa[B,I]<>0 then write(I,', ');
writeln;
end;
end.