Autor Tema: lazo repeat por while

0 Usuarios y 1 Visitante están viendo este tema.

18 Noviembre, 2008, 12:52 pm
Leído 2195 veces

María_B

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 78
  • Karma: +0/-0
  • Sexo: Femenino
Hola
Mi problema se genera cuando quiero cambiar el  lazo "repeat" por "While", en este programa. Es decir no interpreto donde debo colocar while...do...

program cifras(input, output);

var a, b, c: integer;
begin
     writeln(’ Determinar la cantidad de cifras de un entero (sin tener en cuenta el signo)’);(*en base 10*)
     writeln;
     write(’Entrar el numero: ’); readln(a); writeln;
       if (a < 0) then b := -a else b := a;
       c := 0;
       repeat
       c := c + 1;
       b := b div 10
       until b = 0;
     writeln(’La cantidad de cifras de ’, a:1, ’ es ’, c:1);
     writeln(’ Fin ’)
end.

Muchas gracias.

18 Noviembre, 2008, 02:34 pm
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 Pues en principio así:

   ...
   c := 0;
   while b>0 do
   begin
       c := c + 1;
       b := b div 10
    end;
   ....

 Aunque tienes que pensar que ocurre si el número \( a=0 \).

Saludos.

18 Noviembre, 2008, 02:38 pm
Respuesta #2

Gerardo Exequiel Pozzi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Te sugiero escribir el código entre las etiquetas [ code ] y [ /code ]

Pensa que el "repeat" SIEMPRE entra en el ciclo, en cambio el "while" NO, primero verifica una condición.
Además el "repeat" la condición es UNTIL (hasta que ocurra tal cosa) y el "while" es WHILE :) (mientras ocurra tal cosa), digamos que son opuestas.

En tu caso es "repetir hasta que sea 0", al pasarlo a un while "repetir mientras sea distinto de 0".

Con lo que te dije ¿te animas a cambiarlo vos misma?

¡Salut!