Ayuda con fallo por favor, me estoy volviendo loco
Publicado por Alvaro (2 intervenciones) el 26/10/2008 01:22:41
Hola buenas, pues tengo un fallo con un ejercicio que estoy haciendo y despues de 3 dias mirandolo no consigo encontrar el fallo, a ver si ustedes me pueden ayudar.
El ejercicio en cuestion es el siguiente:
# 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.
Para este ejercicio hace falta un bucle que vaya pidiendo la duración de las distintas llamadas. Sería algo así como:
* 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
o incrementar el numero de llamadas en uno
o incrementar el tiempo total que suman todas las llamadas
o leer otra llamada
* presentar resultados
Si desea hacer un programa más completo, puede clasificar las llamadas en nacionales, provinciales y locales (N, P, L) y realizar los cálculos anteriores para cada tipo de llamadas
--------------------------------------------------------------------------------------------------------------------------
Asi deberia quedar al ejecutarse:
Duracion de la llamada (0 para terminar): 10
Tipo de llamada (N/P/L) N
Duracion de la llamada (0 para terminar): 20
Tipo de llamada (N/P/L) P
Duracion de la llamada (0 para terminar): 30
Tipo de llamada (N/P/L) L
Duracion de la llamada (0 para terminar): 40
Tipo de llamada (N/P/L) l
Duracion de la llamada (0 para terminar): 0
>> Nacional
> Llamadas: 1 Duracion: 10.0 > Media: 10.0
>> Provincial
> Llamadas: 1 Duracion: 20.0 > Media: 20.0
>> Local
> Llamadas: 2 Duracion: 70.0 > Media: 35.0
>> Total
> Numero de llamadas: 4
> Duracion total: 100.0
> Duracion media: 25.0
------------------------------------------------------------------------------------------------------------------------------
Y este es el codigo que yo he escrito:
program llamada;
var
duracion,duracionn:integer;
tipo:char;
duracion_total,duracion_totaln,duracion_totalp,duracion_totall:integer;
numero,numero1,numero2,numero3:integer;
media,median,mediap,medial:real;
begin
duracion_total:=0;
numero:=0 ;
duracionn:=0;
write('Duracion de la llamada (0 para terminar): ');
read(duracion);
while(duracion>0) do
begin
write('Tipo de llamada (N/P/L) ');
readln(tipo);
case (tipo) of
'n','N' : begin numero1:=numero1+1; duracion_totaln:=duracion_totaln+duracion; end;
'p','P' : begin numero2:=numero2+1; duracion_totalp:=duracion_totalp+duracion; end;
'l','L' : begin numero3:=numero3+1; duracion_totall:=duracion_totall+duracion; end;
end;
write('Duracion de la llamada (0 para terminar): ');
readln(duracionn);
numero:=numero+1;
duracion_total:=duracion_totaln+duracion_totalp+duracion_totall;
end;
media:=duracion_total/(numero1+numero2+numero3);
median:=duracion_totaln/numero1;
mediap:=duracion_totalp/numero2;
medial:=duracion_totall/numero3;
writeln('>> Nacional');
writeln(' > LLamadas: ', numero1 , ' Duracion: ', duracion_totaln ,' > Media: ', median);
writeln('>> Provincial');
writeln(' > LLamadas: ', numero2 , 'Duracion: ', duracion_totalp ,'> Media: ', mediap);
writeln('>> Local');
writeln(' > LLamadas: ', numero3 , 'Duracion: ', duracion_totall ,'> Media: ', medial);
writeln('>> Total');
writeln(' > Numero de llamadas: ', numero);
writeln(' > Duracion total: ', duracion_total);
writeln(' > Duracion media: ', media);
end.
----------------------------------------------------------------------------------------------------
Os pediria por favor que compilaseis en un segundo mi codigo para que veais el problema que tengo, que lo vereis rapidamente.
Muchisimas gracias de verdad, y saludos
Soy novato en Pascal
El ejercicio en cuestion es el siguiente:
# 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.
Para este ejercicio hace falta un bucle que vaya pidiendo la duración de las distintas llamadas. Sería algo así como:
* 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
o incrementar el numero de llamadas en uno
o incrementar el tiempo total que suman todas las llamadas
o leer otra llamada
* presentar resultados
Si desea hacer un programa más completo, puede clasificar las llamadas en nacionales, provinciales y locales (N, P, L) y realizar los cálculos anteriores para cada tipo de llamadas
--------------------------------------------------------------------------------------------------------------------------
Asi deberia quedar al ejecutarse:
Duracion de la llamada (0 para terminar): 10
Tipo de llamada (N/P/L) N
Duracion de la llamada (0 para terminar): 20
Tipo de llamada (N/P/L) P
Duracion de la llamada (0 para terminar): 30
Tipo de llamada (N/P/L) L
Duracion de la llamada (0 para terminar): 40
Tipo de llamada (N/P/L) l
Duracion de la llamada (0 para terminar): 0
>> Nacional
> Llamadas: 1 Duracion: 10.0 > Media: 10.0
>> Provincial
> Llamadas: 1 Duracion: 20.0 > Media: 20.0
>> Local
> Llamadas: 2 Duracion: 70.0 > Media: 35.0
>> Total
> Numero de llamadas: 4
> Duracion total: 100.0
> Duracion media: 25.0
------------------------------------------------------------------------------------------------------------------------------
Y este es el codigo que yo he escrito:
program llamada;
var
duracion,duracionn:integer;
tipo:char;
duracion_total,duracion_totaln,duracion_totalp,duracion_totall:integer;
numero,numero1,numero2,numero3:integer;
media,median,mediap,medial:real;
begin
duracion_total:=0;
numero:=0 ;
duracionn:=0;
write('Duracion de la llamada (0 para terminar): ');
read(duracion);
while(duracion>0) do
begin
write('Tipo de llamada (N/P/L) ');
readln(tipo);
case (tipo) of
'n','N' : begin numero1:=numero1+1; duracion_totaln:=duracion_totaln+duracion; end;
'p','P' : begin numero2:=numero2+1; duracion_totalp:=duracion_totalp+duracion; end;
'l','L' : begin numero3:=numero3+1; duracion_totall:=duracion_totall+duracion; end;
end;
write('Duracion de la llamada (0 para terminar): ');
readln(duracionn);
numero:=numero+1;
duracion_total:=duracion_totaln+duracion_totalp+duracion_totall;
end;
media:=duracion_total/(numero1+numero2+numero3);
median:=duracion_totaln/numero1;
mediap:=duracion_totalp/numero2;
medial:=duracion_totall/numero3;
writeln('>> Nacional');
writeln(' > LLamadas: ', numero1 , ' Duracion: ', duracion_totaln ,' > Media: ', median);
writeln('>> Provincial');
writeln(' > LLamadas: ', numero2 , 'Duracion: ', duracion_totalp ,'> Media: ', mediap);
writeln('>> Local');
writeln(' > LLamadas: ', numero3 , 'Duracion: ', duracion_totall ,'> Media: ', medial);
writeln('>> Total');
writeln(' > Numero de llamadas: ', numero);
writeln(' > Duracion total: ', duracion_total);
writeln(' > Duracion media: ', media);
end.
----------------------------------------------------------------------------------------------------
Os pediria por favor que compilaseis en un segundo mi codigo para que veais el problema que tengo, que lo vereis rapidamente.
Muchisimas gracias de verdad, y saludos
Soy novato en Pascal
Valora esta pregunta


0