logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Pascal: kopiowanie liczb >32 z pliku txt do pliku elementowego – jak napisać program?

sublove 12 Kwi 2005 00:42 1047 2
REKLAMA
  • #1 1397596
    sublove
    Poziom 15  
    Posty: 225
    Pomógł: 4
    Ocena: 2
    Witam!

    Czy wiecie jak napisać program który przpisuje z pliku txt do elementowego? Konkretnie chodzi mi o sytuację w stylu:

    Istnieje plik tekstowy w którym są zapisane liczby, 12 13 32 53 65.
    Jak będzie wyglądał program który wyszuka z tego pliku tekstowego liczby większe od 32 a następnie przepisze je (tylko te > 32) do pliku elementowego?

    Pomóżcie bo niedługo kolos z Pascala :D
  • REKLAMA
  • #2 1397649
    MarcinQ
    Poziom 11  
    Posty: 16
    może coś takiego : // typy zmiennych ustal, dawno w Pascalu nie robiłem

    czy_cyfra := false ;
    liczba := 0 ;
    while not eof(f) do
    begin
    read(f, ch) ;
    if (not czy_cyfra) and (ch>='0') and (ch<='9') then
    begin
    liczba := ord(ch)-48 ; {wartosc pierwszej cyfry}
    czy_cyfra := true ; {przetwarza liczbe}
    end
    else
    if (czy_cyfra) and (ch>='0') and (ch<='9') then
    liczba := 10*liczba + ord(ch)-48 {dalsze cyfry, uaktualnij liczbe}
    else
    if (czy_cyfra) and ((ch<'0') or (ch >'9')) then {znak-nie cyfra}
    begin
    if (liczba > 32) then
    write(g,liczba) ;
    czy_cyfra := false ;
    end ;
    end ;

    //program musi działać, pytanie, czy o takie działanie Tobie chodziło :)
  • #3 1397775
    mun
    Poziom 16  
    Posty: 73
    Pomógł: 24
    Ocena: 4
    Witam,

    Zakładając, że poszczególne liczby w pliku tekstowym zapisane są w poszczególnych liniach kod może wyglądać następująco:

    var f:Text;
    g:file of Byte;
    Lb:Byte;
    Kod:Integer;
    Line:String;
    begin
    Assign(f,'c:\PlkTxt.txt');
    Assign(g,'c:\PlkBin.bin');
    Reset(f);
    Rewrite(g);
    while not Eof(f) do
    begin
    Readln(f,Line);
    Val(Line,Lb,Kod);
    if (Kod=0) and (Lb>32) then
    Write(g,Lb);
    end;
    Close(f);
    Close(g);
    end.

    Bez komunikatów na ekranie.

    Pozdrawiam
REKLAMA