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!
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
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:
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.
Uhmmm , cuando pongo para que imprima la suma , me imprime el mismo numero 2 veces sin hacer una suma , como seria?
? pone q muestre la variable "resultado"
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:
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.