[ Foro de Pascal ]

Contar con repeat

22-Jan-2014 16:18
Anonimo Anonimo
4 Respuestas

Hola,

Ejercicio propuesto: Crea un programa que escriba en pantalla los números pares del 26 al 10 (descen­diendo), usando "repeat".

La verdad es que no tengo ni idea de como escribir este pequeño programa, no se donde pondría el mod para los números pares, si tengo que crear dos variables con los valores 26 y 10, o no haría falta. Y como pongo en until que no quiero que siga... Basicamente no se como pensarlo, por lo tanto mucho menos escribirlo.

saludos


22-Jan-2014 17:39
Luis Torres (+18)

El truco para resolver este ejercicio está en disiminuir o decrementar en 1 a la variable que va a servir para realizar las operaciones con el MOD y, en escoger la condición de salida del ciclo repeat-until. Aquí te dejo el código del programa:


program NumPares;

cont: integer;

BEGIN
    cont:= 26;
    writeln('Los numeros pares comprendidos entre 26 y 10 son: ');
       repeat
          if (cont mod 2 = 0) then
            writeln(cont);
         cont:= cont - 1;
      until cont=9;
   readln;
END.



22-Jan-2014 22:42
natalia tavora



program contarconrepeat;
type

var
cont:integer;
begin
cont:=28;// es mas facil de lo que pensas porque 26 es par... y 10 tambien...
	//pongo cont en 28 para que el primer numero impar que muestre sea 26..
 writeln('Los numeros pares comprendidos entre 26 y 10 son: ');
repeat 
cont:=cont-2
until(cont>=10);
end



22-Jan-2014 23:43
Nacho Cabanes (+84)

En este caso, en el que están prefijados los valores iniciales y finales, y ambos son pares, a mí me parece más natural (y resulta más rápido en ejecución) restar de dos en dos, en vez de comprobar en cada pasada si es par usando la operación módulo.

En ese sentido, la propuesta de Luis es más general de lo que sería necesario para un ejercicio tan sencillo (y por ello resultará un poco más compleja para un principiante). A la propuesta de Natalia, que es más simple, le falta un "write", y tiene la condición de salida al revés.

Se podría plantear simplemente así:


program del26al10;

var
    i: integer;

begin
i:=26;
repeat 
    writeLn(i);
    i := i -2;
until i<10;
end.



23-Jan-2014 00:03
natalia tavora

hayyy eso me pasa siempre que lo hago primero en pseudocodigo :( ... lo de writeln se me paso jajaj pero mas o  menos la idea estabaxD






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)