Sei sulla pagina 1di 5

FUNDAMENTOS DE COMPUTACIN

EXAMEN DE LA PRIMERA EVALUACIN JULIO 1, 2014

Tema 1. (20 puntos) El cuadrado de cualquier nmero terminado en 5 se lo puede formar


como el producto: (decenas)(decenas+1) + 25.

2
Ej. 85 = 10(8)10(9) + 25 = 7225
2
475 = 10(47)10(48) + 25 = 225625

Elabore un algoritmo que verifique si se cumple esta regla con los nmeros comprendidos entre
5 y m. Si no es verdad, muestre el primer nmero que no cumple esta regla.

Solucin
m=input('Ingrese fin del rango ');
x=1;
for n=5:10:m
m=fix(n/10);
r=10*m*10*(m+1) + 25;
if r~=n^2
disp(n);
x=0;
break;
end
end
if x==1
disp('Se cumple');
else
disp('No se cumple');
end

------------------------------------------------------------------------------------

Prueba

Ingrese fin del rango 1000


Se cumple
Tema 2. (25 puntos) El nmero EAN (European Article Number) usado en la identificacin de
productos consta de 13 dgitos: tres para el pas, cuatro para la empresa, cinco para el
producto y el dgito de control para detectar errores de digitacin con la siguiente regla:

Comenzado por la izquierda hasta el decimo segundo dgito, multiplique el dgito por 1 si la
posicin es impar y por 3 si la posicin es par. Sumar los resultados de los productos y restar
de la decena superior. Este ltimo resultado debe coincidir con el dgito de control

Escriba un algoritmo que lea un nmero EAN, valide que tenga trece dgitos, calcule el dfito de
control e informe el resultado.

Ej. EAN: 7702004003508


7x1 + 7x3 + 0x1 + 2x3 + 0x1 + 0x3 + 4x1 + 0x3 + 0x1 + 3x3 + 5x1 + 0x3 = 52
Decena superior: 60
60 52 = 8 Coincide con el dgito de control. El nmero EAN es correcto.

Solucin
v=[ ];
while length(v)~=13
c=input('Ingrese el cdigo de 13 cifras ');
v=[ ];
while c>0
d=mod(c,10); %Las cifras se almacenan en el vector v
v=[d, v];
c=fix(c/10);
end
end
s=0;
for i=1:12
if mod(i,2)==1
s=s+v(i);
else
s=s+3*v(i);
end
end
ds=10*fix(s/10)+10; %Decena superior
if (ds-s) == v(13)
disp('Cdigo correcto');
else
disp('Cdigo incorrecto');
end

------------------------------------------------------------------------------------

Prueba

Ingrese el cdigo de 13 cifras 7702004003508


Cdigo correcto

Ingrese el cdigo de 13 cifras 7702003003508


Cdigo incorrecto
Tema 3. (25 puntos) Nuevamente el juego de la pirmide fue usado como una estafa para
muchos ciudadanos, en esta ocasin usando publicidad en redes sociales. Para demostrar que
este tipo de negocio es una farsa, escriba un algoritmo que simule esta situacin con las
siguientes reglas:
.- Inicialmente hay una persona en la pirmide, el promotro
.- En cada mes, para recibir beneficios cada persona que se agrega a la pirmide debe
invitar un nmero fijo de k personas
.- Suponer que la pirmide crece de manera uniforme cada mes
.- Cada persona que ingresa a la pirmide debe aportar una cuota fija en dlares
.- El crecimiento ya no es posible cuando el nmero de personas en la pirmide es
Mayor al nmero de personas que pueden aportar dinero, ej. los m habitantes de un
pas .
Muestre cuantos meses funcion la pirmide, cuantas personas fromaron parte y el dinero
recaudado

Solucin

k=input('Cantidad de invitados ');


c=input('Ingrese la cuota ');
m=input('Cantidad lmite personas ');
nivel=0;
tp=1;
s=0;
while tp<m
nivel=nivel+1;
np=k^nivel; %Cantidad de personas en el nivel (mes)
if tp+np>=m
break
end
tp=tp+np;
s=s+np*c;
end
disp('Cantidad de meses');
disp(nivel);
disp('Total de personas');
disp(tp);
disp('Dinero total recaudado')
disp(s);

------------------------------------------------------------------------------------

Prueba

Cantidad de invitados 3
Ingrese la cuota 120
Cantidad lmite personas 1000000
Cantidad de meses
13
Total de personas
797161
Dinero total recaudado
95659200
Tema 4. ( 30 puntos) En una escuela de ftbol se inscriben n jugadores identificados con su
nmero en la lista de asistencia y un cdigo que identifica su habilidad 1: portero, 2: defensa,
3: mediocampista, 4: delantero. Este dato debe ser ingresado y validado.

Escriba un algoritmo para ayudar al entrenador a formar dos equipos de 11 jugadores elegidos
aleatoriamente. Cada equipo debe contener 1 portero, 4 defensas, 2 mediocampistas y 4
delanteros. Cada jugador no puede pertenecer a ms de un equipo. Suponga que hay
suficientes jugadores para elegir.

Solucin
cantjug=[1, 4, 2, 4]; %Cantidad de jugadores en cada posicin
tipojug=[1, 2, 3, 4]; %Tipos de jugadores

n=input('Cantidad de jugadores ');


for i=1:n
disp('jugador'); disp(i);
valid=0;
while valid==0 %Validacin del tipo de habilidad
h=input('Ingrese la habilidad ');
if ismember(h,tipojug)==1
pj(i)=i; %Vector con la lista secuencial de jugadores
hj(i)=h; %Vector con las habilidades de jos jugadores
valid=1;
end
end
end
disp('Vector pj'); disp(pj);
disp('Vector hj'); disp(hj);

a=[ ]; %Vector con los jugadores elegidos para el equipo a


b=[ ]; %Vector con los jugadores elegidos para el equipo b

for i=1:4
njug=0; %Seleccin de jugadores del equipo a
while njug<cantjug(i)
j=fix(n*rand)+1;
if hj(j)==tipojug(i)
jug=pj(j);
a=[a,jug];
njug=njug+1;
pj(j)=[ ]; %Eliminar jugador de la lista secuencial
hj(j)=[ ]; %Eliminar elemento de la lista de habilidades
n=n-1;
end
end

njug=0; %Seleccin de jugadores del equipo b


while njug<cantjug(i)
j=fix(n*rand)+1;
if hj(j)==tipojug(i)
jug=pj(j);
b=[b,jug];
njug=njug+1;
pj(j)=[ ]; %Eliminar jugador de la lista secuencial
hj(j)=[ ]; %Eliminar elemento de la lista de habilidades
n=n-1;
end
end
end
disp('Primer equipo');
disp(a);
disp('Segundo equipo');
disp(b);

------------------------------------------------------------------------------------

Prueba

Vector pj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Vector hj
1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3
3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4

Primer equipo
2 14 7 6 10 17 28 35 29 32 38

Segundo equipo
3 9 5 12 13 20 22 36 33 40 39

Potrebbero piacerti anche