Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: paed en 25 Junio 2011, 01:31 am



Título: pascal ayuda soy principiante
Publicado por: paed en 25 Junio 2011, 01:31 am
en la facultad me dieron un problema en el cual yo debia pedir numeros de teclado, averiguar cuantos digitos tenia, cuantos digitos pares, la suma de los digitos. ademas debo parar de pedir numeros  cuando aparezca el digito 6 y debo averiguar cual es el numero mas grande de todos.


aca hice lo que pude pero me falta la parte de pedir numeros cuando aparezca el 6 y lo de  averiguar cual es el numero mas grande de todos.
espero que puedan ayudarme a resolver estas 2 cuestiones.


Program numerouno;

Var   num:integer;
dig:integer;
par:integer;
impar:integer
pepe integer;
Contador:integer;

Begin;
Writeln(‘escribi un  numero’)
Read(num)

Begin;
pepe:=0
contador:=0
par:=0
impar:=0

repeat
dig:=num mod 10;

if num >10 then writeln (‘los digitos son:’,dig)
if (num>10) and (dig mod 2=0) then par=par+1;
if num >10 then contador:=contador+1;
if num >10 then pepe:=pepe+dig;
if num >10 then num:=(num-dig) div diez;

if num<10 then writeln (‘los digitos son:’,num);
if (num<10) and (dig mod 2=0) then par=par+1;
if num <10 then contador:=contador+1;
if num <10 then pepe:=pepe+dig;
if num<10 then writeln (‘la cantidad de digitos pares son:’,par);
if num<10 then writeln (‘la suma de los digitos da:’,pepe);
if num<10 then writeln (‘hay:’ contador,’digitos’);
until num<10
end.


Título: Re: pascal ayuda soy principiante
Publicado por: Edu en 25 Junio 2011, 01:49 am
Tendrias que tomar la variable num como string mejor, asi cuentas los caracteres que tiene  que serian los digitos y los guardas en la variable para la cant de digitos.
Luego recorrer caracter por caracter, si un caracter es divisible en 2 ( resto 0 obvio), lo guardas en otra variable que contara los digitos pares.
Luego tendrias que crear un array de integer, donde pondras todos los num que se iran generando, asi luego con un bucle que recorra el array vas sumandole todos los items dentro del array y guardandolo siempre en la misma variable que sera la de la suma de todos.

Todo eso lo haces con un bucle que sea Mientras el numero que ingresa no es el 6. Y cuando termine ese bucle, recorres el array que decia anteriormente y buscas cual es el mas grande.

Creo que asi seria, sino entendi mal..


Título: Re: pascal ayuda soy principiante
Publicado por: Valkyr en 12 Julio 2011, 14:52 pm
Como lo propone Edu creo que estaría bien, pero podría hacerse todo del tirón.

La idea es, lees una cadena de caracteres (en este caso serán dígitos) y la guardas en un String, empiezas a recorrer la cadena y en una variable vas almacenando la suma de cada dígito, además una variable para almacenar el número de dígitos pares. Mientras recorres la cadena vas incrementando un contador cada vez que avances un caracter. Por último, para averiguar el mayor de todos los números ingresados, llevas una variable, llamada por ejemplo mayor, la inicializas al comienzo del programa con un valor lo más pequeño posible, por ejemplo, -2147483647, cada vez que leas una secuencia de dígitos haces la comprobación
Código:
if(numeroLeido>mayor) then mayor:=numeroLeido
. Evidentemente en la explicación no te digo nada de como pasar de una cadena de caracteres a entero (integer), eso ya es cosa tuya.

Saludos.