Pascal-Ejercico con while do

Iniciado por Corso, 14 Noviembre 2005, 02:56 AM

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

Corso

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.
Cualquier ciudad es un secreto. Toda palabra traza un laberinto. De cualquier laberinto se sale con palabras.



jvchino

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.
Si ayudo a una sola persona a tener esperanza, no habré vivido en vano.

No, nada llega tarde, porque todas las cosas
tienen su tiempo justo, como el trigo y las rosas

Kpax

el ; del while men te malogra todo
sakludos
En este mundo una de dos

Akuseimaru

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

steballys

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!