Pascal repeat ayuda

Iniciado por netca, 3 Abril 2011, 22:06 PM

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

netca

Crea un programa que pida números positivos al usuario, y vaya calculando la suma de todos ellos (terminará cuando se teclea un número negativo o cero), usando "repeat".



program ej;

var
   numero:integer;
   resultado:integer;

begin
     repeat
           Writeln('Inserte numeros');
           Readln(numero);

     until numero<=0;

end.             



Como hago para realizar la suma?

Saludos!

leogtz

A lo que quieres hacer se les llama acumuladores.

Solo tienes que declarar y asignar una variable suma y asignarle el valor de 0.

Cuando leas el numero lo acumulas así:

suma = suma + numero
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

skapunky

#2
Código (pascal) [Seleccionar]

 
   repeat
          Writeln('Inserte numeros');
          Readln(numero);
          resultado = resultado + numero;
    until numero<=0;

end.  


Imagino que has hecho lo que he hecho yo en el codigo anterior, el problema viene cuando "numero" es valor negativo, ya que la variable que acumula operará con ese numero negativo, es decir el resultado final se verá afectado acausa de que operara el numero negativo antes del UNTIL.

Notese que al ser 0 da igual, porque no altera el resultado final.

Ese problema lo puedes solventar añadiendo un IF o while, incluso puedes anidar otro REPEAT. Aquí el ejemplo:
Código (pascal) [Seleccionar]

program ej;

var
  numero:integer;
  resultado:integer;

begin
resultado = 0;
numero = 0;
   repeat
          Writeln('Inserte numeros');
          Readln(numero);
                  if numero >0 then
                           begin
                               resultado = resultado + numero;
                           end
    until numero<=0;
end.


Problema resuelto.
Killtrojan Syslog v1.44: ENTRAR

netca

Uhmmm , cuando pongo para que imprima la suma , me imprime el mismo numero 2 veces sin hacer una suma , como seria?

Edu

? pone q muestre la variable "resultado"

skapunky

En que lugar has puesto la salida de datos? Eso lo debes poner al final, podrías poner tu codigo para que vieramos porque te aparece dos veces. Tu programa debería quedar con la salida de datos de la siguiente manera:
Código (pascal) [Seleccionar]

program ej;

var
   numero:integer;
   resultado:integer;

begin
resultado = 0;
numero = 0;
    repeat
           Writeln('Inserte numeros');
           Readln(numero);
                   if numero >0 then
                            begin
                                resultado = resultado + numero;
                            end
     until numero<=0;
writeln ('El resultado es: ' resultado);
end.
Killtrojan Syslog v1.44: ENTRAR