Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravim, řešim podobny problem jako je popsan v odkazu níže, akorát musim ještě výsledek zapsat do TXT, nevíte někdo jak na to?
http://forum.matweb.cz/viewtopic.php?id=22745
Offline

↑ schwitz:
Víš, jak se zapisuje do TXT souboru?
Offline
Vím jak se zapisuje do TXT.
Zatím se mi podařilo napsat velmi neefektivní program, který do souboru zapisuje pokaždé když mi algoritmus vyhodi nejake prvocislo. S tím že sem si musel napsat zvlášť procedury pro zapis prvocisla," * " a " = ".
Nenapadá mě jakym způsobem ošetřit aby se vysledek zapsal do souboru jako celek a ne takhle po částech.
tady co sem zatím stvořil, buďte shovívavý, jsem zelenáč :D
program PrvociselnyRozklad;
//Napiste program, ktery pro zadane prirozene cislo
//spocita prvociselny rozklad a zapise vysledek do textoveho souboru.
uses zapis;
var
i,prv: integer;
begin
writeln('Program, ktery pro zadane prirozene cislo spocita prvociselny rozklad, pro konec zadejte nulu');
writeln('Zadejte cislo: ');
repeat
readln(i);
if i=0 then break else
if i<0 then writeln('Program pracuje jen s prirozenymi cisly.') else
prv:=2;
zapisprv(i); //procedura pro zapis prvocisla
zapisrvn; // procedura pro zapis =
write(' = ');
if i=1 then begin write(i); zapisprv(i); zapismezeru; end else
begin
while i<>1 do
begin
while (i mod prv)=0 do
begin
write(prv);
zapisprv(prv);
i:=i div prv;
if i>1 then begin zapistxt('*'); write('*'); end;
end;
prv:=prv+1;
end;
zapismezeru;
end;
writeln;
until i=0;
end.Ještě pro úplnost jednotka zápis
unit zapis;
interface
procedure zapisprv(co: integer);
procedure zapistxt(co: char);
procedure zapisrvn;
procedure zapismezeru;
implementation
procedure zapisprv(co: integer);
var f: text;
begin
AssignFile(f, 'pokus.txt');
{$I-}
append(f);
{$I+}
if (IOResult <> 0) then
begin
{$I-}
rewrite(f);
{$I+}
if(IOResult <>0) then
begin
writeln('soubor neni mozne otevrit pro zapis,vzdavam to');
exit;
end;
end;
write(f, co);
close(f);
end;
procedure zapistxt(co: char);
var f: text;
begin
AssignFile(f, 'pokus.txt');
append(f);
write(f, co);
close(f);
end;
procedure zapismezeru;
var f: text;
begin
AssignFile(f, 'pokus.txt');
append(f);
writeln(f);
close(f);
end;
procedure zapisrvn;
var f: text;
begin
AssignFile(f, 'pokus.txt');
append(f);
write(f, ' = ');
close(f);
end;
end.Offline
↑ schwitz:
Nebylo by jednodušší místo tvoření jednotky zapis a vytváření procedury kvůli každé ptákovině ten soubor na začátku otevřít, když do něj chci něco zapsat, tak to zapsat, a na konci programu ho zase zavřít? Nikde není dáno že to musíš zapsat najednou.
Jo, a jinak to ošetření záporných čísel nemáš udělané úplně nejlíp. Schválně zkus na vstup zadat záporné číslo.
Offline