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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Problema con este programa en Pascal.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con este programa en Pascal.  (Leído 4,360 veces)
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Problema con este programa en Pascal.
« en: 20 Marzo 2011, 04:53 am »

Me encuentro realizando el siguiente ejercicio:

Citar
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.

http://pastebin.com/09M7Fxyc

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

Gracias de antemano.


En línea

imoen


Desconectado Desconectado

Mensajes: 1.589



Ver Perfil
Re: Problema con este programa en Pascal.
« Respuesta #1 en: 20 Marzo 2011, 12:00 pm »

no te he mirado el codigo pero digo yo que lo que pasa es que no controlas el fin o la rotura del bucle.



Digamos que deberias de tener esta estructura


Repeat

programa

a = Presiona Y/N
upcase a
until a = " N"

O tambien lo mismo con un bucle while o simplemente

if a = "N" break

un saludo

bs imoen


EDITOOOOO


Vale ya te he visto el codigo

Veamos cosas que se pueden hacer ,
lo primero parece que esta bien, pero prueba una cosa , traza el programa, e inspecciona el valor de chos , yo creo que no coje el valor puede ser poq usas read , aunque sea char inicializala dale un valor.

Cambia el bucle principal por un while asi la condicion se comprueba al principio del bucle. While chos <>  N
begin
end
otra cosa cuando leas chos , pasalo a mayusculas y te ahorras la doble comparacion
creo que es con upcase.

Si me dices el compilador que usas me lo bajo y lo miro XD



« Última modificación: 20 Marzo 2011, 12:07 pm por imoen » En línea

Medion Akoya p6624
i-3 370
8 gigas DDR 3 RAM //750 hd 5400
gforce gt425 optimus XDD
Esta es mi casa, mi pueblo , o lo que queda de el aun asi lucharemos ... POR BENALIA....!!

srta imoen
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Problema con este programa en Pascal.
« Respuesta #2 en: 20 Marzo 2011, 17:14 pm »

Muchísimas gracias por tu ayuda, mira que lo he solucionado, al menos parcialmente.

El problema era en el segundo y último read(), ya que no me detectaba la pulsación o algo así, y los cambie ambos por readln() y ahora sí me lo detectan; viene otro problema, al principio, que pongo:

Código:
#
 write('Duracion de la llamada (0 para terminar): ');
readln(Dur);
write('Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : ');
read(Tipo);

En la primera parte, que si pongo 0 se debe terminar el bucle, cuando inserto el 0, en vez de pararlo automáticamente, me pregunta por la otra variable, y entonces ya para el bucle, y quisiera saber como evitar eso.

Muchas gracias.

PD: Uso FreePascal como compilador (si a eso te refieres, soy algo novato en el tema).

En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Problema con este programa en Pascal.
« Respuesta #3 en: 20 Marzo 2011, 19:15 pm »

Podrías cambiar el repeat por un while y dejar el código de esta forma:

write('Duracion de la llamada (0 para terminar): ');
         readln(Dur);
while(Dur<>0) do
         write('Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : ');
         read(Tipo);

         if (Tipo = 'N') or (Tipo = 'n') then
            BEGIN
            N1 := N1+1;
            Cont1 := Cont1+Dur
            END;

         if (Tipo = 'P') or (Tipo = 'p') then
            BEGIN
            P1 := P1+1;
            Cont2 := Cont2+Dur
            END;

         if (Tipo = 'L') or (Tipo = 'l') then
            BEGIN
            L1 := L1+1;
            Cont3 := Cont3+Dur
            END;

         Cont01 := Cont01+1;
         Cont0 := Cont0+Dur;
         RE := RE+Dur;
                        write('Duracion de la llamada (0 para terminar): ');
         readln(Dur);
      end.


Así conseguirías que si pones 0 no vuelva a preguntar lo de llamada provincial.......

Espero que te haya ayudado.

PD: No se si habré escrito correctamente lo del while, compruebalo tu mismo con el compilador porque hace ya un año que no uso Pascal xD

Saludos.
En línea

imoen


Desconectado Desconectado

Mensajes: 1.589



Ver Perfil
Re: Problema con este programa en Pascal.
« Respuesta #4 en: 9 Abril 2011, 11:05 am »

Otra idea que me surge para esa lectura , se podria usar el readkey ?¿ mejor que el readln.


Jeje miles de sugerencias xDD
En línea

Medion Akoya p6624
i-3 370
8 gigas DDR 3 RAM //750 hd 5400
gforce gt425 optimus XDD
Esta es mi casa, mi pueblo , o lo que queda de el aun asi lucharemos ... POR BENALIA....!!

srta imoen
skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Problema con este programa en Pascal.
« Respuesta #5 en: 9 Abril 2011, 13:18 pm »

Seguramente si se puede, pero en general, los "menus" en pascal se hacen de la forma que tienes en el codigo.

Yo soy otro de los que contesta sin mirar tu codigo, pero si tienes declarada la variable Tipo como char, tu codigo es válido completamente. De esta forma siempre he hecho los menus en pascal yo.
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
programa pascal
Ejercicios
rudyairlines 1 4,772 Último mensaje 5 Enero 2008, 19:30 pm
por rudyairlines
tengo un problema con este programa.
Programación C/C++
Danyel_Casvill 9 3,777 Último mensaje 12 Noviembre 2010, 22:29 pm
por flony
problema con programa en Pascal
Programación General
SXF 8 4,562 Último mensaje 19 Enero 2011, 11:52 am
por skapunky
Problema con este programa básico
Programación C/C++
Manimecker 3 1,905 Último mensaje 22 Octubre 2011, 01:41 am
por rir3760
NVIDIA no mostró Pascal en el CES de este año
Noticias
wolfbcn 0 668 Último mensaje 10 Enero 2016, 03:02 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines