Pascal/Turbo Pascal - evitar termino de programa

 
Vista:

evitar termino de programa

Publicado por Oliver Mohr (3 intervenciones) el 15/07/2010 21:11:00
bueno, estoy empezando con esto y tengo un problema con un programa que hice para calcular el volumen de una circunferencia, que una vez que calculo el volumen se cierra. quisiera saber como poner después que diga desea calcular otra cosa? o algo por el estilo y que pregunte el radio de nuevo. Aquí va el código: (donde están los ************ dice otra cosa que la censuré jaja)

(*Oliver Mohr
Versión 1.0.0
Fecha de inicio 14-07-2010
Objetivo: Aprender
Fichero: aprendiendo.pas*)
const
Pi=3.141592;
var
R: real;
function Volumen(R: real):real;
begin
Volumen:= (4/3)*Pi*R*R*R
end;
begin
writeln('Ingrese el radio de la esfera');
readln(R);
if R > 0 then
write ('Esfera de radio ',R:6:3, ' tiene volumen ',Volumen(R):8:4);
if R = 0 then write ('******************');
if R < 0 then write ('******************');
readln();
end.

PD: otra duda, antes el programa se me cerraba solo y encontré como sugerencia en inet escribir readln() al final del programa pero no entendí porqué se usa, tampoco lo recomendaban mucho, me gustaría también entender un poco más esa parte.
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

RE:evitar termino de programa

Publicado por epayan (71 intervenciones) el 15/07/2010 22:14:14
pues es hora de empezar con ciclos:

ahi vamos añadiendole a tu codigo

const
Pi=3.141592;
var
R: real;
tecla:char;
function Volumen(R: real):real;
begin
Volumen:= (4/3)*Pi*R*R*R
end;
begin
repeat
writeln('Ingrese el radio de la esfera');
readln(R);
if R > 0 then
writeln ('Esfera de radio ',R:6:3, ' tiene volumen ',Volumen(R):8:4);
writeln('Desea continuar S/N');
Tecla:=readkey;
Until (Tecla ='N') or (Tecla ='n' );
end.
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

RE:evitar termino de programa

Publicado por Oliver Mohr  (3 intervenciones) el 16/07/2010 04:08:29
program aprendiendo;
(*Oliver Mohr
Versión 1.0.0
Fecha de inicio 14-07-2010
Objetivo: Aprender
Fichero: aprendiendo.pas*)
const
Pi=3.141592;
var
R: real;
tecla: char;
function Volumen(R: real):real;
begin
Volumen:= (4/3)*Pi*R*R*R
end;
begin
repeat
writeln('Ingrese el radio de la esfera');
readln(R);
if R > 0 then
write ('Esfera de radio ',R:6:3, ' tiene volumen ',Volumen(R):8:4);
if R = 0 then write ('****************');
if R < 0 then write ('************');
writeln ('Desea continuar? (S/N)');
Tecla:=readkey;
Until (tecla ='N') or (tecla ='n');
end.

quedó asi pero no me reconoce readkey
dice identifier not found "readkey"
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

RE:evitar termino de programa

Publicado por Oliver Mohr (3 intervenciones) el 16/07/2010 04:18:33
ya lo solucioné eso, pero cuando no se inserta un radio numérico por ejemplo una letra o cuando en S/N inserto k por ejemplo el programa se ceirra como evito eso?
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

RE:evitar termino de programa

Publicado por epayan (71 intervenciones) el 16/07/2010 07:05:37
El error que te marca al insertar letras al momento de leer datos númericos lo puedes corregir con el ioresult..el read y readln no acepta teclas especiales como el esc , para validar eso tendrias que hacer tu editor de lectura de numeros

Program Ejercicio;
Uses Crt;
Const
Pi=3.141592;
Var
R: Real;
Tecla:Char;
Function Volumen(R: real):real;
Begin
Volumen:= (4/3)*Pi*R*R*R
End;
Begin
Repeat
ClrScr;
Writeln('Ingrese el radio de la esfera');
Readln(R);
If R > 0 Then
Writeln ('Esfera de radio ',R:6:3, ' tiene volumen ',Volumen(R):8:4);

Writeln('Pulse Cualquier tecla Para Continuar ,S Para Salir...');
Tecla:=Readkey;
Until (Tecla ='S') Or (Tecla ='s' );
End.
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