elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Pascal repeat ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pascal repeat ayuda  (Leído 5,271 veces)
netca

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Pascal repeat ayuda
« 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!


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Pascal repeat ayuda
« Respuesta #1 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


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Pascal repeat ayuda
« Respuesta #2 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.
« Última modificación: 5 Abril 2011, 14:16 pm por skapunky » En línea

Killtrojan Syslog v1.44: ENTRAR
netca

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Pascal repeat ayuda
« Respuesta #3 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?
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Pascal repeat ayuda
« Respuesta #4 en: 9 Abril 2011, 01:27 am »

? pone q muestre la variable "resultado"
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Pascal repeat ayuda
« Respuesta #5 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.
En línea

Killtrojan Syslog v1.44: ENTRAR
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Str Repeat y Bucle For
PHP
Dacan 4 2,207 Último mensaje 22 Febrero 2009, 21:31 pm
por Dacan
Imegenes en Mails, como simulo el repeat de CSS ?
PHP
Diabliyo 2 2,488 Último mensaje 28 Febrero 2011, 21:44 pm
por Diabliyo
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,244 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
duda de repeat, o do..while
Programación General
Mario Olivera 1 1,695 Último mensaje 20 Mayo 2015, 06:04 am
por engel lex
background-repeat-y al reves?
Desarrollo Web
basickdagger 2 2,362 Último mensaje 18 Mayo 2016, 07:28 am
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines