Idea para programa en turbo pascal
Hola muchas gracias, pero tengo una duda, la idea esta perfecta pero cuando agrego un repeat en la parte principal del problema para que se puedan volver a efectuar los calculos con otro dato, (repeat ... until rpta=´N´) aparece para ingresar nuevamente los datos pero tengo que ingresar tres veces los datos para que recien me aparezca el resultado. hice la siguiente modificacion:
program peso;
uses crt;
var
temp, por, densidad, altura:real;
tanque:integer;
rpta:char;
function numeroreal(xn, yn: integer):real;
var
tecla:char;
nr:real;
dato: string[12];
error,cont:integer;
begin
numeroreal:=0.0;
cont:=1;
fillchar(dato,13,' ');
dato[0]:= char(12);
repeat
tecla:=readkey;
if tecla in [#48..#57,#46]then
begin
dato[cont]:=tecla;
dato[0]:=chr(cont);
gotoxy(xn+cont,yn);write(dato[cont]);
cont:=cont + 1;
if cont>12 then
cont:=12;
end;
if tecla = #8 then
begin
cont:=cont-1;
if cont<1 then
cont:=1;
dato[cont]:=' ';
dato[0]:=chr(cont);
gotoxy(xn+cont,yn);write(dato[cont]);
end;
until tecla=#13;
if cont>1 then
begin
val(dato,nr,error);
numeroreal:=nr;
end;
end;
function busca(nn:real):real;
var
f:text;
d: string[80];
ds: string[12];
paso: longint;
ch:char;
err,k,i:integer;
bus: string[12];
final, si: boolean;
resultado, mult, compn:real;
begin
busca:=0.0;
assign(f,'c:\tp\bin\datos.txt');
{$I-} reset(f); {$I+}
if ioresult<>0 then
begin
halt(1);
end
else
begin
paso:=0;
while not Eof(F) do
begin
readln(F,d);
k:=1;
for i:=1 to 9 do
begin
if d[i] in[#48..#57,#46] then
begin
ds[k]:=d[i];
ds[0]:=chr(k);
k:=k+1;
end
else
begin
end;
end;
val(ds,compn,err);
if compn=nn then
begin
k:=1;
for i:=8 to length(d) do
begin
if d[i] in [#48..#57,#46] then
begin
ds[k]:= d[i];
ds[0]:= chr(k);
k:=k+1;
end;
end;
val(ds,mult,err);
busca:=mult;
end;
end;
close(f);
end;
end;
procedure calculo;
begin
gotoxy(10,2);write('Ingrese la Altura: ');
gotoxy(41,2);
altura:=numeroreal(41,2);
gotoxy(10,2);clreol;
por:=busca(altura);
gotoxy(10,2); write('Ingresa la Temperatura: ');
gotoxy(39,2);
temp:=numeroreal(39,2);
gotoxy(10,2);clreol;
end;
begin
repeat
clrscr;
calculo;
densidad:=0.9325-((temp-15)*0.00068);
writeln('la densidad es: ',densidad:8:4);
gotoxy(10,3);writeln('el peso es: ',densidad*por:8:3);
gotoxy(10,4);writeln('el volumen es: ',por:8:3);
gotoxy(20,10);write('desea realizar otro calculo S/N: ');read(rpta);
until rpta='n';
end.