oneseven Napisano Marzec 2, 2013 Zgłoś Share Napisano Marzec 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 do komentarza Udostępnij na innych stronach More sharing options...
babubabu Napisano Marzec 2, 2013 Zgłoś Share Napisano Marzec 2, 2013 Poczytaj o sortowaniu bąbelkowym. Link do komentarza Udostępnij na innych stronach More sharing options...
oneseven Napisano Marzec 2, 2013 Autor Zgłoś Share Napisano Marzec 2, 2013 Znam sortowanie bąbelkowe, ale nie mam pojęcia jak zaimplementować je do listy jednokierunkowej. Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.