Free pascal-ban hogy lehet egy számolás eredményét lementeni . Txt file-ba?
régebben írtam egy prím szám kereső programot és azt szeretném ha a prímszámokat leírná egy jegyzettömbbe.
itt a programom amivel vmi nincs rendben :
program Pelda09;
var f:text;
s:string;
begin
assign(f,'szoveg.txt');
{$I-}
reset(f);
{$I+}
if IOResult<>0 then begin
writeln('Hiba: nincs meg a file.');
halt;
end;
while not eof(f) do begin
readln(f,s);
writeln(s);
end;
close(f);
end.
uff.. :D most veszem észre nem ezt akartam ide másolni ! és igen én válaszoltam neki. itt van amit akartam:
program primszam;
uses crt;
const n=1000;
var d,e,h,i:integer;
f:text;
begin
clrscr;
for i:=1 to n do begin
e:=0;
for d:=1 to n do begin
for h:=1 to i do begin
if i/d=h then begin
e:=e+1;
if e=2 then begin
assign(f,'prim.text');
rewrite(f);
if ioresult<>0 then begin
writeln('hiba a fájl megnyitásával!');
halt;
end;
write(f,i);
close(f);
end;
end;
end;
end;
end;
readln;
end.
elnézést csak megszoktam hogy másolás ctrl c és a free pascalban ez nem működik. Szóval még egyszer megkérdezem hogy valaki nem tudja mi a baj ezzel a programmal? a free pascal nem dobta ki hogy vmit nem ért vagy vmi elírtam stb, és nem indul el.
Na, így már picit másabb a felállás :).
Az alábbi kód pont azt csinálja amit szeretnél(elvileg) és rövidebb is némiképp:
program primszam;
uses crt;
const
n=1000;
var
d,e,i:integer;
f:text;
begin
clrscr;
Assign(f,'Prim.txt');
{$i-}
ReWrite(f);
{$i+}
if IOREsult<>0 then
begin
writeln('HIBA!!!'+#10#13+'A fájl, Prim.txt, nem hozható létre!');
writeln('A program futása megszakadt...');
Halt(1);
end;
for i:=1 to n do
begin
e:=0;
for d:=1 to i do
begin
if (i mod d)=0 then inc(e);
end;
if e=2 then writeln(f,i);
end;
Close(f);
writeln('Elkészültem! A kilépéshez nyomd meg az <ENTER> billenytűt...');
readln;
end.
program primszam;
uses crt;
const
n=1000;
var
d,e,i,h:integer;
f:text;
begin
clrscr;
Assign(f,'Prim.txt');
{$i-}
ReWrite(f);
{$i+}
if IOREsult<>0 then
begin
writeln('HIBA!!!','prim.txt',' nem hozható létre!');
writeln('A program futása megszakadt...');
Halt(1);
end;
for i:=1 to n do
begin
e:=0;
for d:=1 to n do
begin
for h:=1 to i do
begin
if i/d=h then begin
e:=e+1;
end;
if e=2 then writeln(f,i:10);
end;
end;
end;
Close(f);
writeln('Elkészültem! A kilépéshez nyomd meg az <ENTER> billenytűt...');
readln;
end.
így is jó de lassabb. Pedig nem voltam messze attól hogy magamtól rájöjjek :(
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!