elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:05  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  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 1,772 veces)
Manimecker

Desconectado Desconectado

Mensajes: 47



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

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


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

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 por imoen » En línea

2 X Intel pentium III 1000 MHZ ( bi procesador )
2 gigas de Memoria value kigston pc 133 ( 4 X 512)
40 gigas de hd seagate ->> update 2 x 40 gigas 
ati 8500 64 mb DDR ->> update gforce 5200 FX 256

srta imoen
Manimecker

Desconectado Desconectado

Mensajes: 47



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

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: 632


Divide y vencerás


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

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


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

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

2 X Intel pentium III 1000 MHZ ( bi procesador )
2 gigas de Memoria value kigston pc 133 ( 4 X 512)
40 gigas de hd seagate ->> update 2 x 40 gigas 
ati 8500 64 mb DDR ->> update gforce 5200 FX 256

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

Mensajes: 3.441



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

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA EN ESTE PROGRAMA
Programación General
LOKORIP 0 257 Último mensaje 24 Febrero 2005, 15:24
por LOKORIP
Cual es el problema de este programa? (c++)
Programación C/C++
csmaper 5 792 Último mensaje 27 Julio 2009, 15:46
por Erik#
tengo un problema con este programa.
Programación C/C++
danyhack 9 1,020 Último mensaje 12 Noviembre 2010, 22:29
por flony
problema con programa en Pascal
Programación General
SXF 8 1,611 Último mensaje 19 Enero 2011, 11:52
por skapunky
Problema con este programa básico
Programación C/C++
Manimecker 3 267 Último mensaje 22 Octubre 2011, 01:41
por rir3760
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines