Hola
Os comento, para las practicas de la universidad me han mando que haga un programa que haga varios calculos introduciendo un radio y una altura. Los calculos los realizo con funciones asi como dar valores al radio y la altura.
Os coloco el codigo para que lo veais:
program Calculos;
const
pi=3.1415926;
function cambiarRadio:real;
var
r:real;
begin
{$I-}
Repeat
writeln('');
writeln('Nuevo Radio');
readln(r);
UNtil (IOResult=0) and (r>0);
cambiarRadio:=r;
End;
function cambiarAltura:real;
var
al:real;
begin
{$I-}
Repeat
writeln('');
writeln('Nueva Altura');
readln(al);
Until (IOResult=0) and (al>0);
cambiarAltura:=al;
End;
function mensaje:integer;
var
n:integer;
Begin
{$I-}
Repeat
writeln('');
writeln('Elige la opcion');
writeln('1.Cambiar el radio considerado para los calculos');
writeln('2.Modificar el valor de la altura');
writeln('3.Calcular el perimetro de la circunferencia');
writeln('4.Calcular el area de la circulo');
writeln('5.Calcular el volumen de la esfera');
writeln('6.Calcular el volumen del cilindro');
writeln('7.Calcular todos los valores anteriores a la vez');
writeln('8.Salir del programa');
readln(n);
Until (IOResult=0) or (n<>0) or (n=1) or (n=2) or (n=3) or (n=4) or (n=5) or (n=6) or (n=7) or (n=8);
mensaje:=n;
End;
function perimetro(r:real):real;
var
pe : real;
begin
pe:= 2*pi*r;
perimetro:=pe;
end;
function area(r:real):real;
var
a : real;
begin
a:= pi*sqr(r);
area:=a;
end;
function vole(r:real):real;
var
voe : real;
begin
voe:= 4/3*pi*(r*r*r);
vole:=voe;
end;
function cili(r:real;al:real):real;
var
cil : real;
begin
cil:=(2*pi*r)*al;
cili:=cil;
end;
var
n :integer;
ra, al, per, ar, vo, ci: real;
Begin
Repeat
n:=mensaje;
Case n of
1: ra:=cambiarRadio;
2: al:=cambiarAltura;
3: begin
per:=perimetro(ra);
writeln('');
writeln('El perimetro es ',per:2:2);
writeln('');
end;
4: begin
ar:=area(ra);
writeln('');
writeln('El area es ',ar:2:2);
writeln('');
end;
5: begin
vo:=vole(ra);
writeln('');
writeln('El volumen es ',vo:2:2);
writeln('');
end;
6: begin
ci:=cili(ra,al);
writeln('');
writeln('El volumen es ',ci:2:2);
writeln('');
end;
7: begin
ra:=cambiarRadio;
al:=cambiarAltura;
writeln('');
per:=perimetro(ra);
writeln('El perimetro de la circunferencia es ',per:2:2);
ar:=area(ra);
writeln('El area del circulo es ',ar:2:2);
vo:=vole(ra);
writeln('El volumen de la esfera es ',vo:2:2);
ci:=cili(ra,al);
writeln('El volumen del cilindro es ',ci:2:2);
writeln('');
end;
End;
Until n=8;
End.
El problema viene con unos de los requisitos, se recalculara el valor solicitado en caso de haber cambiado el radio y/o la altura desde la ultima vez que se calculo. Eso es lo que me resulta complicado, he probado colocando una variable auxiliar, contadores pero no he conseguido nada
¿Me podeis ayudar?
Gracias