Pascal/Turbo Pascal - Idea para programa en turbo pascal

 
Vista:

Idea para programa en turbo pascal

Publicado por David (6 intervenciones) el 25/09/2011 05:30:18
Saludos a todos y gracias por las respuestas y el interes de contestar, mi consulta es la siguiente: quiero hace un programa en pascal de la siguiente forma
peso=densidad*volumen;
el volumen lo encuentro en una tabla con la siguiente estructura:
altura volumen
1.000 m --- 1235.555 m3
1.001m ---- 1236.555 m3
1.002m--- 1237.555 m3
. .
. .
. .
. .
12.000m ----123456.000 m3
en mi programa yo ingreso un dato de altura y me debe de mostrar el volumen ademas del peso.
mi duda es como trabajar con la tabla.
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

Idea para programa en turbo pascal

Publicado por ramon (2158 intervenciones) el 26/09/2011 19:13:14
Intentare ayudarte dime estos valores 1.000 m --- 1235.555 m3 como están en un archivo o
en una constante como esta altura : array[0..xx] of real (1.000 ,1,001,1.002,xxx ).
O en lineas de texto como las muestras tu.
1.000 m --- 1235.555 m3
1.001m ---- 1236.555 m3
1.002m--- 1237.555 m3
. .
. .
. .
. .
12.000m ----123456.000 m3
lo comento para mostrar la forma de tomar los datos en cada caso es diferente su forma.
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

Idea para programa en turbo pascal

Publicado por David (6 intervenciones) el 26/09/2011 21:14:34
Gracias por tu respuesta, los datos los tengo ingresados en formato de texto de dos columnas, en realidad son 5 archivos de los cuales el programa debera elegir de acuerdo a la opcion que se le de.
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

Idea para programa en turbo pascal

Publicado por ramon (2158 intervenciones) el 26/09/2011 21:29:15
Pasa me unas lineas del primer archivo copiando lo con el bloc de notas para poder
manejarte los datos para la búsqueda y recogida de datos abre el archivo con el bloc de notas
copia las lineas que quieras y pásalas yo creare el archivo de texto
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

Idea para programa en turbo pascal

Publicado por davocana (6 intervenciones) el 03/10/2011 17:21:27
Hola, puedes trabajar on las tres primeros datos que he puesto en el ejemplo, o crees que seria mas facil en un array?, espero tus comentarios. Gracias
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

Idea para programa en turbo pascal

Publicado por ramon (2158 intervenciones) el 03/10/2011 20:27:27
{Archivo creado para prueva es}
{datos.txt con el bloc de notas su contenido es}
{1.000 m --- 1235.555 m3
1.001m ---- 1236.555 m3
1.002m--- 1237.555 m3
1.003m--- 1238.555 m3
1.004m--- 1239.555 m3 }

program peso;
uses
crt;
var
por, densidad, altura : real;



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] := chr(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:\respue~1\datos.txt'); {cambiar directorio al que}
{corresponda}
{$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('Entre la Altura Minimo 1.000 : ');
gotoxy(41,2);
altura := numeroreal(41,2);
gotoxy(10,2);clreol;
por := busca(altura);
gotoxy(10,2);write('Entre la Densidad : ');
gotoxy(29,2);
densidad := numeroreal(29,2);
gotoxy(10,2);clreol;
end;

begin
clrscr;
calculo;
writeln('EL Peso Es : ',densidad * por:8:3);
readln;
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

Idea para programa en turbo pascal

Publicado por davocana (6 intervenciones) el 04/10/2011 20:51:48
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.
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

Idea para programa en turbo pascal

Publicado por davocana (6 intervenciones) el 07/10/2011 21:16:37
pora fa una ayudita para poder terminarlo, gracias
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

Idea para programa en turbo pascal

Publicado por ramon (2158 intervenciones) el 08/10/2011 12:10:24
{Este funciona con repetición asta decir no}

program peso;
uses
crt;
var
resul, densidad, altura : real;
tec : 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] := chr(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\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('Entre la Altura Minimo 1.000 : ');
gotoxy(41,2);
altura := numeroreal(41,2);
gotoxy(10,2);clreol;
gotoxy(10,2);write('Entre la Densidad : ');
gotoxy(29,2);
densidad := numeroreal(29,2);
clrscr;
resul := 0.9325 - ((densidad - 15) * 0.0068);
writeln('La altura es : ',altura:8:3);
writeln('La densidad es : ',resul:8:3);
writeln('EL Peso Es : ',resul * busca(altura):8:3);
readln;
end;

begin
clrscr;
repeat
calculo;
gotoxy(10,20);write('Desea Mas [S/N]');
tec := readkey;
clrscr;
until tec in['n','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

Idea para programa en turbo pascal

Publicado por davocana (6 intervenciones) el 08/10/2011 20:02:13
Muchas gracias Ramón me sirvio de mucho, sinceramente el programa es un poco mas avanzado que mis conocimientos, por lo que me gustaria saber que libro (si es online mejor) puedo revisar para conocer el manejo de archivos como lo has hecho en este prorama, muchas gracias nuevamente. saludos cordiales desde el Perú
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