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

program w Pascalu, wczytywanie pliku, zapis do pliku.

nowaczek82 17 Sty 2007 15:21 2690 4
REKLAMA
  • #1 3453546
    nowaczek82
    Poziom 11  
    Posty: 10
    Ocena: 3
    Witam
    potrzebuje program w Pascalu.
    program ten ma wczytać plik z wyrazami (są one ułożone alfabetycznie) i mam dodać na wejściu jeszcze jeden wyraz i program ma go zapisać w pliku (z którego wczytał pozostałe wyrazy) i ma on być w takim miejscu w tym pliku aby wszystkie wyrazy dalej były ustawione alfabetycznie (razem z tym dodatkowym).

    z góry dziękeję za pomoc
  • REKLAMA
  • #2 3459463
    Lucart
    Poziom 12  
    Posty: 9
    Pomógł: 1
    Ocena: 4
    Witam

    A napisałeś już coś?

    Masz problem z obsługą plików czy z sortowaniem?
  • REKLAMA
  • #3 3459762
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    Pomocny może być plik pomocniczy
    while not eof(fin) do begin
        readln(fin, s);
        if s>nowy then begin
             writeln(fout, nowy);
             writeln(fout, s);
             break;
        end;
        writeln(fout, s);
    end;
    
    while not eof(fin) do begin
        readln(fin, s);
        writeln(fout, s);
    end;
    close(fin); erase(fin);
    rename(fout); close(fout);
    
  • REKLAMA
  • #4 3460065
    nowaczek82
    Poziom 11  
    Posty: 10
    Ocena: 3
    problem mam z wstawieniem nowego wyrazu w opowiednie miejsce zgodnie z alfabetem (bo te wyrazy w pliku na wejściu są już ustawione alfabetycznie) więc raczej sortowania nie ma...
    potrzeba tylko przeszukać ten plik (łańcuch) i w odpowiednie miejsce wstawienie nowego wyrazu.
  • #5 3463376
    Lucart
    Poziom 12  
    Posty: 9
    Pomógł: 1
    Ocena: 4
    Słowo "sortowanie" to był taki skrót myślowy bo sprawdzenia, który element jest wcześniej od innego używa się m.in. w sortowaniu.

    Ale na temat:

    Podsyłam funkcję, której podajesz dwie wartości (string) a zwraca zwróci wartość TRUE gdy wyraz pierwszy jest później w alfabecie niż drugi.
    Wielkość liter nie ma znaczenia. Dla wyrazów z polskimi literami wyjdą głupoty.


       
    function sprawdz (linia,tekst:string):boolean;
      var
        i : byte;
        p : boolean;
    begin
      p := FALSE;
      i:=0;
    
      repeat
        inc(i);
        if (upcase(linia[i-1]) = upcase(tekst[i-1])) or (i =1) then
          if upcase(linia[i]) > upcase(tekst[i]) then
             p := TRUE
      until p or (i = length (linia));
    
      sprawdz := p
    end {sprawdz};
    



    Pozdrawiam
    Artur
REKLAMA