Pascal/Turbo Pascal - Programa Llamadas

 
Vista:
Imágen de perfil de Judit
Val: 25
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Programa Llamadas

Publicado por Judit (12 intervenciones) el 23/07/2017 14:37:13
Buenas tardes, no logro encontrar el fallo en un ejercicio de Pascal que debe solicitar la duración de las llamadas y calcular la duración total, el valor medio y el número de llamadas, esto es lo que he escrito:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Program llamadas;
 
uses
   crt;
 
var
 
   num_llam: integer;     (*Numero de llamadas*)
   dur_llam: integer;     (*Duracion total de llamadas*)
   nueva_llam: integer;   (*Duracion de la nueva llamada*)
   dur_media: real;    (*Duracion media de las llamadas*)
 
Begin
 
     (*Inicializacion de variables*)
 
   num_llam:= 0;
   dur_llam:= 0;
   nueva_llam:= 0;
   dur_media:= 0;
 
     (*Bucle*)
 
   repeat
 
      writeln('Duracion de la llamada (0 para terminar): ');
      readln(nueva_llam);
 
         while (nueva_llam > 0) do
            begin
               num_llam:= num_llam + 1;
               dur_llam:= nueva_llam + dur_llam;
            end;
 
   until (nueva_llam = 0);
 
     (*Presentacion de resultados*)
 
   If (nueva_llam = 0) then
 
      begin
         dur_media:= (dur_llam / num_llam);
         writeln('Numero de llamadas: ', num_llam);
         writeln('Duracion total: ', dur_llam);
         writeln('Duracion media: ',dur_media);
      end;
 
   readkey
end.



El programa se queda parado tras introducir la primera variable ¿Podéis ayudarme?
Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 116
Oro
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Programa Llamadas

Publicado por dario (38 intervenciones) el 23/07/2017 16:55:27
En el REPEAT entrabas a un bucle infinito.
Te dejo este a ver si te sirve.
Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
uses crt;
var
	i,duracion,flag:integer;
	media,total:real;
begin
	clrscr;
	total:=0.0;
	media:=0.0;
	i:=0;
	flag:=1;
 
	while flag = 1 do begin
		write('Duracion de la llamada (0 para terminar): ');
		readln(duracion);
 
		if duracion > 0 then begin
			inc(i);
			total:=total + duracion;
		end
		else
			flag:=0;
	end;
 
	writeln;
	writeln('> Numero de llamadas: ',i);
	writeln('> Duracion total: ',total:5:2);
	media:=total/i;
	writeln('> Duracion media: ',media:5:2);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Judit
Val: 25
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Programa Llamadas

Publicado por Judit (12 intervenciones) el 23/07/2017 19:49:43
¡Gracias! He encontrado el error, he cambiado el bucle mientras por una selectiva simple.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar