kamil274 0 Napisano 3 Styczeń 2011 (edytowane) Witam, mam program który tworzy liste w TP ale gdy chce napisać procedure która dodaje element na końcu tej listy to podczas działania programu oczywiście się wysypuje Czy ktoś mógłby spróbować mi pomóc? Oto kod tego programu : (Chodzi mi dokładniej o sama procedurę "DodajZa") program CerateList; uses crt; TYPE PElem = ^TElem; TElem = RECORD dane : integer; wsk :PElem; END; VAR q,poczatek,glowa,temp:PElem; licz,k:integer; procedure ListCreate(var pocz:PElem; var k:integer); {tworzenie listy} var q:PElem; n:integer; begin write('Podaj dlugosc listy (0<n<100) n='); readln(n); k:=n; pocz:=nil; WHILE n>0 DO BEGIN new(q); q^.wsk:=pocz; pocz:=q; pocz^.dane:=n; n:=n-1; END; end; procedure ListAdd(var pocz:PElem;var n:integer); var k:integer; q:PElem; begin write('Podaj wartosc dadawanego elementu na poczatek listy k='); readln(k); new(q); q^.wsk:=pocz; pocz:=q; pocz^.dane:=k; n:=n+1; end; Procedure DodajZa(var n:integer; var koniec:PElem); {To ta zla procedura} Var q:PElem; k:integer; Begin write('Podaj wartosc dodawanego elementu na koncu listy '); readln(k); new(q); {tworzenie nowego elementu} q^.wsk:=nil; {wsk na NIL} while koniec<>NIL do {przeszukuje dopoki nie znajdzie konca listy} koniec:= koniec^.wsk; q:=koniec; {koniec powinien wskazywac na q-ktory staje sie teraz nowym koncem} koniec^.dane:=k; n:=n+1; End; procedure ListWrite(pocz:PElem); {wypisywanie listy} begin writeln; WHILE pocz<>NIL DO BEGIN q:=pocz; write(' ',q^.dane); pocz:=q^.wsk; END; end; function ListSearch(head:PElem;k:integer):PElem; {funkcja sekwencyjnie przeglada Liste zlozona z elementow typu TElem} {w poszukiwaniu wartosci pola dane = k, wynikiem funkcji jest: } { wskaznik do elementu, w ktorym przechowywane jest k} {lub wskaznik pusty, gdy taki element nie istnieje} begin while (head <> nil) and (k <> head^.dane) do head := head^.wsk; ListSearch := head; end; Begin clrscr; ListCreate(poczatek,licz); writeln('!!!! uwaga !!!',licz); {dopisywanie elementu na poczatek listy} {ListAdd(poczatek,licz);} glowa:=poczatek; DodajZa(licz,poczatek); {wypisywanie listy} ListWrite(poczatek); {wyszukiwanie elementu z listy} writeln; write('Poszukiwany element dane=' );readln(k); temp:=ListSearch(glowa,k); IF temp<>NIL THEN writeln('Znaleziona dana = ',temp^.dane) ELSE writeln('Nie znaleziono wartosci ',k); readln; End. Edytowane 3 Styczeń 2011 przez kamil274 Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
luk1999 17 Napisano 3 Styczeń 2011 A jaki masz błąd (kod błędu)? W której linii program się wywala? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
kamil274 0 Napisano 4 Styczeń 2011 Exited with Exitcode = 216 To mi wywala.I Bóg jeden wie co mam źle wiem że wina leży po mojej stronie ale nie mam pojęcia jak to wykminić. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Nerio 17 Napisano 4 Styczeń 2011 https://groups.google.com/group/pl.comp.lang.pascal/browse_thread/thread/e738d23c1c9120d0/683c80207a21c48c?lnk=st&q=exit+code+201&rnum=2&hl=pl Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
kamil274 0 Napisano 4 Styczeń 2011 No teraz wiem jaki to błąd ale nie mam pojęcia jak to zrobić . Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach