Pascal/Turbo Pascal - Programa letras pares y nones

 
Vista:

Programa letras pares y nones

Publicado por angelrojinegro (2 intervenciones) el 28/08/2010 15:29:26
Hola, disculpen la molestia pero me urge esta informacion pues hoy tendo examen, hice este programa que imprime las letras pares y nones, la de las letras nones si me sale bien, pero de los pares no, si me salen las letras pares pero tambien me salen caras, corazones, espadas. Estos son los procedimientos que hice

Este es el que me sale bien
procedure non;
var
nombre: array [1..20] of char;
y,f,i: integer;
j:char;
begin
clrscr;
writeln('Escribe tu nombre terminando con un punto ');
y:=1;
repeat
read(nombre[y]);
y:=y+1
until nombre[y-1] ='.';
writeln('Las letras nones de tu nombre son: ');
f:=y-1;
y:=1;
writeln;
repeat
write (nombre[y]);
y:=y+2
until y = f;
readln;
readln;
end;

y este el que no me sale
procedure par;
var
nombre: array [1..20] of char;
y,f,i: integer;
j:char;
begin
clrscr;
writeln('Escribe tu nombre terminando con un punto ');
y:=1;
repeat
read(nombre[y]);
y:=y+1
until nombre[y-1] ='.';
writeln('Las letras PARES de tu nombre son: ');
f:=y-1;
y:=2;
writeln;
for i:=1 to f do
begin
write (nombre[y]);
y:=y+2
end;
readln;
readln;
end;

cuando trate de cambiar el bucle for de par por uno repeat, cae en un ciclo infinito.

Muchas gracias a los que puedan ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Programa letras pares y nones

Publicado por Diego Romero (996 intervenciones) el 28/08/2010 21:17:16
¿Por qué usar array de char y no string?

El problema con el procedimiento par; es que estás mostrando posiciones del array que aún no fueron inicializadas. Sin embargo yo no me molestaría en usar un array cuando un string es lo adecuado:

procedure par(nombre: string);
var
i: integer;
begin
for i:=1 to length(nombre) do
begin
if ((i mod 2) = 0) then
writeln(nombre[i],' par')
else
writeln(nombre[i],' inpar');
end;
end;

Lo que hago aquí es pasar un string como parámetro del procedimiento, en un ciclo for que va de 1 hasta el largo de la cadena determino si i es par usando el operador mod que devuelve el resto de la división entera, si el resto es cero luego de dividir por dos entonces i es par, sino es inpar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa letras pares y nones

Publicado por angelrojinegro (2 intervenciones) el 30/08/2010 02:24:41
Gracias por tu respuesta, pero el maestro nos dio la indicacion de quje fuera con un array de tipo char,

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar