Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con este programa en Pascal.

Estas en el tema de Problema con este programa en Pascal. en el foro de Programación General en Foros del Web. Me encuentro realizando el siguiente ejercicio: Cita: Añadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales ...
  #1 (permalink)  
Antiguo 19/03/2011, 22:18
 
Fecha de Ingreso: junio-2007
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Exclamación Problema con este programa en Pascal.

Me encuentro realizando el siguiente ejercicio:

Cita:
Añadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales (L) y realizar los mismo cálculos que antes para cada tipo de llamada (duración y numero de llamadas Nacionales, duración y numero de llamadas Provinciales y duración y numero de llamadas Locales). El programa también debe solicitar, después de presentar los resultados, si se desea realizar de nuevo todo el proceso anterior.

El resultado debe ser similar a esto:

Introduzca la duración de la llamada en minutos (0 para terminar): 5
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

Introduzca la duración de la llamada en minutos (0 para terminar): 15
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: n

Introduzca la duración de la llamada en minutos (0 para terminar): 20
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: l

Introduzca la duración de la llamada en minutos (0 para terminar): 40
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

Introduzca la duración de la llamada en minutos (0 para terminar): 0



-Especificación llamadas Nacionales, Provinciales y Locales-

El numero de llamadas nacionales a sido: 1 y su duración: 15.00 minutos.
El numero de llamadas provinciales a sido: 2 y su duración: 45.00 minutos.
El numero de llamadas locales a sido: 1 y su duración: 20.00 minutos.

-Totales-

Numero de llamadas: 4
Duración total: 80.00 minutos.
Duración media: 20.00 minutos.

Desea continuar para realizar otra lista de llamadas? S/N: n
Todo lo llevo perfecto, sólo que en la última parte, que pregunta si desea continuar, si pongo n o N, se vuelve a ejecutar el bucle y nunca acaba, y no sé por qué.

Les dejo el código estructurado que llevo hasta ahora en el siguiente enlace.

[url]http://pastebin.com/09M7Fxyc[/url]

Dejo el link ya que el código es demasiado extenso y es mejor estructurarlo en un pastebin.

Gracias de antemano.
  #2 (permalink)  
Antiguo 19/03/2011, 22:49
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Problema con este programa en Pascal.

Hola,

Hay una gran diferencia entre read() y readln().

http://pastebin.com/diff.php?i=JG4GM7BD

La diferencia está en la forma que manejan la 'cola' de teclas. read() lee la siguiente tecla que haya en la cola, si no hay nada no lee nada. readln() espera hasta que se presione la tecla enter.

Prueba a escribir:

Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : 0 N

Lógicamente la solución es usar readln.

Saludos,
  #3 (permalink)  
Antiguo 19/03/2011, 23:28
 
Fecha de Ingreso: junio-2007
Mensajes: 12
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Problema con este programa en Pascal.

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,

Hay una gran diferencia entre read() y readln().

[url]http://pastebin.com/diff.php?i=JG4GM7BD[/url]

La diferencia está en la forma que manejan la 'cola' de teclas. read() lee la siguiente tecla que haya en la cola, si no hay nada no lee nada. readln() espera hasta que se presione la tecla enter.

Prueba a escribir:

Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : 0 N

Lógicamente la solución es usar readln.

Saludos,
Hombre, me has salvado el pellejo!!

Muchísimas gracias.

Ahora, tengo otro pequeño problema, si ves, tengo 1 repeat dentro de otro repeat, así que en el segundo repeat cuando inserto el número '0', se debería detener el bucle, pero en vez de que se detenga, inserto el número y me pregunta también por la otra variable, la del tipo de llamada, y después me muestra los resultados totales ¿hay alguna manera de evitar eso?
  #4 (permalink)  
Antiguo 20/03/2011, 22:48
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Problema con este programa en Pascal.

Hola,

Siguiendo la misma lógica del programa tienes que agregar una comprobación para ver si tienes que pasar por la siguiente parte del código o no.

Código:
...
if Dur <> 0 then
  begin
  write('Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : ');
...
http://pastebin.com/Sh084CL7
Saludos,

Etiquetas: continuar, desea, llamadas, numero, pascal, pastebin, repeat, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:41.