Matematické Fórum

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

#1 24. 12. 2013 21:05

schwitz
Zelenáč
Příspěvky: 5
Reputace:   
 

Pascal - zapis do souboru txt

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

 

#2 24. 12. 2013 22:50

janca361
.
Příspěvky: 3284
 

Re: Pascal - zapis do souboru txt

↑ schwitz:
Víš, jak se zapisuje do TXT souboru?

Offline

 

#3 25. 12. 2013 00:58

schwitz
Zelenáč
Příspěvky: 5
Reputace:   
 

Re: Pascal - zapis do souboru txt

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


Code:

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

Code:

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

 

#4 25. 12. 2013 13:16 — Editoval LukasM (25. 12. 2013 13:18)

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: Pascal - zapis do souboru txt

↑ 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

 

#5 25. 12. 2013 14:12

schwitz
Zelenáč
Příspěvky: 5
Reputace:   
 

Re: Pascal - zapis do souboru txt

To je pravda, na stedry den me to ale nenapadlo.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson