Revision, por favor
Publicado por Alejandro (7 intervenciones) el 19/10/2013 12:03:47
Buenas. Me encuentro escribiendo este mensaje debido a que me han pedido que realice un programa bastante sencillo, pero estoy ante un problema que no logro identificar. El programa no es mas que pedir un numero por pantalla y:
-Sumar las cifras pares.
-Sumar cifras impares en posiciones impares.
-Sumar cifras pares en posiciones pares.
El codigo del programa esta practicamente acabado:
program prog;
var
a1,a2,a3:integer;
sum1,sum2,sum3:integer;
cont1,cont2:integer;
begin
cont1:=0;
cont2:=0;
sum1:=0;
sum2:=0;
sum3:=0;
writeln('Introduzca numero');
readln(a1);
a2:=a1;
a3:=a3;
while a1<>0 do
while a2<>0 do
writeln('Suma de cifras impares en posiciones impares: ',sum2);
while a3<>0 do
writeln('Suma de cifras pares en posiciones pares: ',sum3);
readln;
end.
El problema esta a la hora de probarlo. Yo escribo el numero 85582 y en las variables a2 y a3 se me guarda 20046. No se porque se me guarda ese numero. Pense que lo habia hecho bien, peroesta visto que no. Una solucion que puedo implementar es:
a2:=0;
a3:=0;
a2:=a2+a1;
a3:=a3+a1;
De esta forma yo tengo este problema, pero preferiria ahorrarme el hacerlo. Por favor, necesito que alguien me indique donde esta el problema. Muchas gracias
-Sumar las cifras pares.
-Sumar cifras impares en posiciones impares.
-Sumar cifras pares en posiciones pares.
El codigo del programa esta practicamente acabado:
program prog;
var
a1,a2,a3:integer;
sum1,sum2,sum3:integer;
cont1,cont2:integer;
begin
cont1:=0;
cont2:=0;
sum1:=0;
sum2:=0;
sum3:=0;
writeln('Introduzca numero');
readln(a1);
a2:=a1;
a3:=a3;
while a1<>0 do
if ((a1 mod 2)=0) then
begin
sum1:=sum1+(a1 mod 10);
a1:=a1 div 10;
end
else
a1:=a1 div 10;
writeln('Suma de cifras pares: ',sum1);begin
sum1:=sum1+(a1 mod 10);
a1:=a1 div 10;
end
else
a1:=a1 div 10;
while a2<>0 do
begin
cont1:=cont1+1;
if (((a2 mod 2)=1) and ((cont1 mod 2)=1)) then
begin
sum2:=sum2+(a2 mod 10);
a2:=a2 div 10;
end
else
a2:=a2 div 10;
end;cont1:=cont1+1;
if (((a2 mod 2)=1) and ((cont1 mod 2)=1)) then
begin
sum2:=sum2+(a2 mod 10);
a2:=a2 div 10;
end
else
a2:=a2 div 10;
writeln('Suma de cifras impares en posiciones impares: ',sum2);
while a3<>0 do
begin
cont1:=cont2+1;
if ((a3 mod 2)=0) and ((cont2 mod 2)=0) then
begin
sum3:=sum3+(a3 mod 10);
a3:=a3 div 10;
end
else
a3:=a3 div 10;
end;cont1:=cont2+1;
if ((a3 mod 2)=0) and ((cont2 mod 2)=0) then
begin
sum3:=sum3+(a3 mod 10);
a3:=a3 div 10;
end
else
a3:=a3 div 10;
writeln('Suma de cifras pares en posiciones pares: ',sum3);
readln;
end.
El problema esta a la hora de probarlo. Yo escribo el numero 85582 y en las variables a2 y a3 se me guarda 20046. No se porque se me guarda ese numero. Pense que lo habia hecho bien, peroesta visto que no. Una solucion que puedo implementar es:
a2:=0;
a3:=0;
a2:=a2+a1;
a3:=a3+a1;
De esta forma yo tengo este problema, pero preferiria ahorrarme el hacerlo. Por favor, necesito que alguien me indique donde esta el problema. Muchas gracias
Valora esta pregunta
0