Pascal/Turbo Pascal - problemas con la división y al grabar archivos

 
Vista:

problemas con la división y al grabar archivos

Publicado por 23232 (1 intervención) el 28/07/2023 05:14:27
program STAR;
//uses CRT;
const
lib=2.2046;
type
fecha= record
dia:byte;
mes: byte;
anio: integer;
end;

salidas = record
fecRegistro: fecha;
sustancia: string[20];
end;
informes= record
sustancia: string[20];
cantidad: real;
end;
var
stars:text;
s:char;

informe: file of informes;
i:informes;

salida: file of salidas;
a:salidas;
nombre:string;
kg:real;
libra:longint;
s_dia: integer;
s_mes:integer;
s_anio:integer;
x:integer;
enero:real;
febrero:real;
marzo:real;
abril:real;
mayo:real;
junio:real;
julio:real;
agosto:real;
septiembre: real;
octubre:real;
noviembre:real;
diciembre:real;
conversor:longint;
function ConvertirAEntero(s: char): integer;
begin
case s of
'0': ConvertirAEntero := 0;
'1': ConvertirAEntero:= 1;
'2': ConvertirAEntero := 2;
'3': ConvertirAEntero := 3;
'4': ConvertirAEntero := 4;
'5': ConvertirAEntero := 5;
'6': ConvertirAEntero := 6;
'7': ConvertirAEntero := 7;
'8': ConvertirAEntero:= 8;
'9': ConvertirAEntero := 9;
else
ConvertirAEntero := -1; // Si el carácter no es un dígito, se devuelve -1
end;
end;

Begin
assign(stars, 'stars.txt');
assign(salida, 'salida.dat');
assign(informe,'informe.dat');
{$I-}

reset(stars);
rewrite(salida);
rewrite(informe);
{$I+}
if IOResult <> 0 then
halt(2);
read(stars,s);

while not EOF(stars) do
begin
kg:=0;
libra:=0;
s_dia:=0;
s_mes:=0;
s_anio:=0;

if s='N' then
begin
read(stars,s);
for x:=1 to 2 do
begin//comienzo a tratar fecRegistro

s_dia:= s_dia*10+ConvertirAEntero (s);
read(stars,s);

end;
a.fecRegistro.dia:=s_dia;

for x:=1 to 2 do
begin
s_mes:= s_mes*10+ConvertirAEntero (s);
read(stars,s);

end;
a.fecRegistro.mes:=s_mes;
for x:=1 to 4 do
begin

s_anio:= s_anio*10+ConvertirAEntero (s);
read(stars,s);

end;

a.fecRegistro.anio:=s_anio;

nombre:='';
while s<> '#' do
begin//trato nombre de la sustancia
nombre:= nombre + s;
read(stars,s);
end;

read(stars,s);
a.sustancia:=nombre;
i.sustancia:=nombre;

write(salida,a);

while s<>'#'do
begin //SALTEO EL CODIGO
read(stars,s);
end;
read(stars,s);//b
conversor:=0;
while s<>'#'do
begin//cantidad de la sustancia
conversor:=conversor*10+ConvertirAEntero(s);
read(stars,s);
end;

libra:=conversor;

//sobre final de la sust (#) c
kg:= libra/lib;

write('mostrar',kg);

i.cantidad=kg;

write (informe,i);

end
else// d
begin
read(stars,s);
for x:=1 to 8 do
begin //comienzo a tratar fecRegistro
read(stars,s)
end;
nombre:='';
while s<> '#'do //trato nombre de la sustancia
begin
nombre:= nombre+s;
read(stars,s);
end;
i.sustancia:=nombre;
read(stars,s);
while s<> '#'do
begin
read(stars,s);
end;
read(stars,s);
conversor:=0;
while s<>'#'do //cantidad de la sustancia
begin
conversor:=conversor*10+ ConvertirAEntero(s);
read(stars,s);
end; //sobre end;al de la sust (#)
libra:=conversor;
kg:=libra/lib;
i.cantidad:=kg;
write(informe,i);
end;
if s_anio = 2022 then
begin
case s_mes of
1: enero:= kg+enero;
2: febrero:= kg+febrero;
3: marzo:= kg+marzo;
4: abril:= kg+abril;
5:mayo:= kg+mayo;
6: junio:= kg+junio;
7:julio:= kg+julio ;
8: agosto:= kg+agosto ;
9:septiembre:= kg+septiembre;
10: octubre:= kg+octubre;
11: noviembre:= kg+noviembre;
12: diciembre:= kg+diciembre;
end;
read(stars,s);

end;
end;
close(stars);
close(salida);
close(informe);

reset(informe);
read(informe,i);
while not EOF(informe)do
begin
writeln('Nombre ',i.sustancia,'Cantidad:',i.cantidad);
read(informe,i);
end;
close(informe);
write('Informe mensual del año 2022');
writeln('Enero:',enero);
writeln('Febrero:',febrero);
writeln('Marzo:',marzo);
writeln('Abril:',abril);
writeln('Mayo:',mayo);
writeln('Junio:',junio);
writeln('Julio:',julio);
writeln('Agosto:',agosto);
writeln('Septiembre:',septiembre);
writeln('Octubre:',octubre);
writeln('Noviembre:',noviembre);
writeln('Diciembre:',diciembre);


end.





al realizar la conversion de libras a kilos toma el entero resultante de la funcion como decimal con un entero. Y no graba en los archivos de salidas ninguna de las asignaciones
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