Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: Corso en 14 Noviembre 2005, 02:56 AM

Título: Pascal-Ejercico con while do
Publicado por: Corso en 14 Noviembre 2005, 02:56 AM
Se me propuso hacer un programa en pascal el cual tiene que hacer esto:

Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
-la duración total de sus llamadas
-el valor medio
-el número total de llamadas
-y los presente por pantalla.

Bien, el  "algoritmo" (por llamarlo de alguna manera) que a mí se me ocurrió es el siguiente:

>iniciar los valores de las variables necesarias, numero de llamadas y duración total de todas las llamadas
>leer la primera llamada
>mientras llamada sea mayor que cero
   >incrementar el numero de llamadas en uno
   >incrementar el tiempo total que suman todas las llamadas
   >leer otra llamada
>presentar resultados.

Y el código en pascal:

program telefonos;

var


   numero: integer;
   duracion: real;
   media: real;


begin

  write('Duracion de la llamada (0 para terminar): ');
  readln(duracion);

  while (duracion>0) do
 
        begin
          numero:=numero+1;
          duracion:=duracion+duracion;
        end;

  media:=numero/duracion;

  writeln('Numero de llamadas: ',numero);
  writeln('Duracion total: ',duracion);
  writeln('Duracion media: ',media);
 
end.


Se compila, pero lo ejecutar y de

write('Duracion de la llamada (0 para terminar): ');
readln(duracion);

Ya no pasa...

Sugerencias? Cuantas cosas me encontráis mal?
Si esta mal de la cabeza a los pies, no quiero la solución solo una orientación.

Salu2.
Título: Re: Pascal-Ejercico con while do
Publicado por: jvchino en 14 Noviembre 2005, 07:33 AM
while (duracion>0) do

        begin
          numero:=numero+1;
          duracion:=duracion+duracion;
        end;


El problema es que dentro del WHILE ... DO  no tienes una sentencia para leer la "duración"

Debes tener otra variable Durac_Total que acumule todas las duraciones.

.
.
.
durac_total:=0;
while (duracion>0) do
        begin
          durac_total:=durac_total + duración;
          numero:=numero+1;
          readln(duracion)
        end;
.
.
.


Y tu media... esta al revés; debe ser  min/llamada  o  seg/llamada; entonces:
media:=durac_total/numero;

Saludos.
Título: Re: Pascal-Ejercico con while do
Publicado por: Kpax en 15 Noviembre 2005, 20:45 PM
el ; del while men te malogra todo
sakludos
Título: Re: Pascal-Ejercico con while do
Publicado por: Akuseimaru en 30 Junio 2009, 18:51 PM
mira men es sencillo lo que pasa que es la entrada de datos no tiene el ciclo repetitivo asi que lo ejecuta una sola vez tenes que ponerselo a la entrada de datos y listo... espero te sirva  ;D ;D ;D
Título: Re: Pascal-Ejercico con while do
Publicado por: steballys en 19 Marzo 2010, 22:29 PM
me puedes por favor explicar a que te refieres con que la entrada no tiene ciclo repetitivo es que soy nueva en esto y me cuesta mucho, pero igual si meinteresa enterder. gracias!