oneseven Posted March 2, 2013 Report Share Posted March 2, 2013 Witam, chciałbym zwrócić się o pomoc do użytkowników tego forum. Mam do napisania program, który będzie oparty na liście rekordów. Program po podaniu danego wyrazu przez użytkownika ma wstawić go do listy alfabetycznie. Mam jednak lekki problem z porównaniem zawartości kolejnych rekordów, program który napisałem działa tylko dla dwóch pierwszych wyrazów, potem samoistnie się wyłącza a delphi nie pokazuje żadnego błędu. Jeśli ktoś mógłby udzielić jakichś rad, byłbym bardzo wdzięczny. Oto kod, który dotychczas napisałem (funkcja Sprawdz porównuje po kolei wszystkie elementy stringa jakim jest przekazany do niej wyraz i wywołuje się rekurencyjnie): program pgrzast; {$APPTYPE CONSOLE} type _wsk = ^wpis; wpis = record slowo: string; dalej: _wsk; end; function sprawdz(s1, s2:string):boolean; var a:integer; begin if ord(s1[1]) < ord(s2[1]) then result:= true else if ord(s1[1]) < ord(s2[1]) then result :=false else if ord(s1[1]) = ord(s2[1]) then result:=sprawdz(copy(s1,2,length(s1)),copy(s2,2,length(s2))) end; procedure podstaw(pocz:_wsk; var e,tmp: _wsk); begin tmp:=pocz; while pocz <> nil do begin if Sprawdz(e^.slowo,pocz^.slowo) then tmp:=tmp^.dalej; pocz:=pocz^.dalej; end; e^.dalej:=tmp^.dalej; tmp^.dalej:=e; end; procedure Dodaj(var pocz: _wsk); var e,tmp: _wsk; begin new(e); writeln('Podaj slowo do wpisania:'); readln(e^.slowo); if pocz = nil then begin e^.dalej:=pocz; pocz:=e; end else begin tmp:=nil; podstaw(pocz,e,tmp); end; end;//Dodaj procedure PokazListe(Pocz: _wsk); begin while Pocz<>nil do begin write(Pocz^.slowo,^i); Pocz:=Pocz^.dalej; end; end; //GLOWNY var pocz: _wsk; slowo1,slowo2:string; znak:char; begin Pocz:=nil; repeat writeln('Lista jednokierunkowa'); writeln('1 - pokaz cala Liste'); writeln('2 - dodaj element do Listy'); writeln('q - zakoncz program'); readln(znak); case znak of '1': PokazListe(Pocz); '2': Dodaj(Pocz); 'q': writeln('Do zobaczenia...'); else write('Wybrales inny klawisz, nacisnij ENTER aby wrocic'); end; readln; until znak='q'; end. Link to comment Share on other sites More sharing options...
babubabu Posted March 2, 2013 Report Share Posted March 2, 2013 Poczytaj o sortowaniu bąbelkowym. Link to comment Share on other sites More sharing options...
oneseven Posted March 2, 2013 Author Report Share Posted March 2, 2013 Znam sortowanie bąbelkowe, ale nie mam pojęcia jak zaimplementować je do listy jednokierunkowej. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.