Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: netca en 3 Abril 2011, 22:06 pm



Título: Pascal repeat ayuda
Publicado por: netca en 3 Abril 2011, 22:06 pm
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".


Código:
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!


Título: Re: Pascal repeat ayuda
Publicado por: leogtz en 4 Abril 2011, 04:50 am
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í:

Código:
suma = suma + numero


Título: Re: Pascal repeat ayuda
Publicado por: skapunky en 5 Abril 2011, 14:14 pm
Código
  1.  
  2.    repeat
  3.           Writeln('Inserte numeros');
  4.           Readln(numero);
  5.           resultado = resultado + numero;
  6.     until numero<=0;
  7.  
  8. 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
  1. program ej;
  2.  
  3. var
  4.   numero:integer;
  5.   resultado:integer;
  6.  
  7. begin
  8. resultado = 0;
  9. numero = 0;
  10.    repeat
  11.           Writeln('Inserte numeros');
  12.           Readln(numero);
  13.                   if numero >0 then
  14.                            begin
  15.                                resultado = resultado + numero;
  16.                            end
  17.     until numero<=0;
  18. end.

Problema resuelto.


Título: Re: Pascal repeat ayuda
Publicado por: netca en 8 Abril 2011, 23:27 pm
Uhmmm , cuando pongo para que imprima la suma , me imprime el mismo numero 2 veces sin hacer una suma , como seria?


Título: Re: Pascal repeat ayuda
Publicado por: Edu en 9 Abril 2011, 01:27 am
? pone q muestre la variable "resultado"


Título: Re: Pascal repeat ayuda
Publicado por: skapunky en 9 Abril 2011, 13:14 pm
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
  1. program ej;
  2.  
  3. var
  4.   numero:integer;
  5.   resultado:integer;
  6.  
  7. begin
  8. resultado = 0;
  9. numero = 0;
  10.    repeat
  11.           Writeln('Inserte numeros');
  12.           Readln(numero);
  13.                   if numero >0 then
  14.                            begin
  15.                                resultado = resultado + numero;
  16.                            end
  17.     until numero<=0;
  18. writeln ('El resultado es: ' resultado);
  19. end.