mam problem... mecze sie z programem (cykliczna lista kolejek) nie wiem jak umiescic kolejke w elemencie listy:) help me...
0
0
może jakiś kod, bo jasnowidz na emeryturze jest ...
0
program teta2;
{$AppType CONSOLE}
uses
SysUtils;
type
t_el_kol =^element_kolejki;
element_kolejki = record
liczba:real;
nastepny:t_el_kol;
end;
t_element = ^element_listy;
element_listy = record
//dane elementu listy
nazwa :string;
wartosc:integer;
kolejka:t_el_kol;
//łączniki listy
nastepny :t_element;
poprzedni:t_element;
end;
{-------------------------PROCEDURY KOLEJEK----------------------------------}
{inicjuje zmienna kolejki}
procedure inicjuj_kolejke(var pierwszy,ostatni:t_el_kol);
begin
pierwszy:=nil;
ostatni:= nil;
end;
{dodaje element do kolejki}
procedure dodaj_element_do_kolejki(var pierwszy:t_el_kol; cyfra:real);
var ostatni:t_el_kol;
n,i:integer;
begin
if pierwszy = nil then
begin
new(pierwszy);
write('ile elementow chcesz dodac: ');
readln(n);
for i:=1 to n do
begin
writeln(' dodaj element kolejki : ');
readln(cyfra);
pierwszy^.liczba:=cyfra;
pierwszy^.nastepny:=nil;
end;
end;
if pierwszy<>nil then
begin
ostatni:=pierwszy;
while ostatni^.nastepny <> nil do
ostatni:=ostatni^.nastepny;
new(ostatni^.nastepny);
ostatni^.nastepny^.liczba:=cyfra;
ostatni^.nastepny^.nastepny:=nil;
end;
end;
{drukowanie kolejki na konsoli}
procedure wyswietl_kolejke(var pierwszy:t_el_kol);
begin
while pierwszy<>nil do
begin
write(pierwszy^.liczba:3:3, ' ');
pierwszy:=pierwszy^.nastepny;
end;
end;
{usuwanie kolejki}
procedure usun_kolejke(var pierwszy:t_el_kol);
var
pomocnik:t_el_kol; // zmienna pomocnicza do usuwania kolejnych elementow
begin
while pierwszy<>nil do
begin
pomocnik:=pierwszy; // przypisanie wartosc
pierwszy:=pierwszy^.nastepny; // przesuniecie o jeden element w kolejce
dispose(pomocnik); // usuniecie "poprzedniego"
end;
end;
{-------------------PROCEDURY LISTY------------------------------------------}
{inicjuje zmienne listy}
procedure inicjuj_liste(var glowa,ogon:t_element);
begin
glowa := nil;
ogon := nil;
end;
{wstawia element na koniec listy
wejscie:glowa - glowa listy
ogon - ogon listy
nazw,wart - parametry dla nowo tworzonego elementu}
procedure wstaw(var glowa,ogon:t_element; nazw:string; wart:integer; pierwszy:t_el_kol; cyfra:real);
var nowy:t_element;
begin
//utworzenie nowego elementu i przypisanie mu wartości
new(nowy);
writeln('podaj nazwe');
readln(nazw);
nowy^.nazwa := nazw;
writeln('podaj wartosc');
readln(wart);
nowy^.wartosc := wart;
dodaj_element_do_kolejki(pierwszy,cyfra);
nowy^.nastepny := nil;
nowy^.poprzedni:= nil;
//wstawienie elementu do listy
if ogon<>nil then
begin
ogon^.nastepny := nowy;
nowy^.poprzedni:= ogon;
nowy^.nastepny:=glowa;
end;
ogon := nowy;
if glowa=nil then glowa:=ogon;
end;
{ wypisujemy cala liste }
procedure wypisz_liste(var glowa:t_element;pierwszy:t_el_kol);
var pomocniczy_wsk : t_element;
begin
write(' ');
if glowa <> nil then
begin
pomocniczy_wsk := glowa;
repeat
write(pomocniczy_wsk^.wartosc);
pomocniczy_wsk :=pomocniczy_wsk^.nastepny;
write('- ');
wyswietl_kolejke(pierwszy);
if pomocniczy_wsk <> nil then
write(', ');
until (pomocniczy_wsk = glowa) or (pomocniczy_wsk = nil);
end;
write(' ');
end;
var glowa,ogon : t_element;
pierwszy, ostatni : t_el_kol;
cyfra:real;
nazw:string;
wart:integer;
n,i,ilosc,licznik: integer;
begin
inicjuj_liste(glowa,ogon);
inicjuj_kolejke(pierwszy,ostatni);
writeln('ile elementow listy chcesz utworzyc?');
readln(ilosc);
for licznik:=1 to ilosc do
wstaw(glowa,ogon, nazw, wart, pierwszy, cyfra);
wypisz_liste(glowa,pierwszy);
readln;
end.
jakby ktos mi wytlumaczyl co robie zle i naprowadzil/poprawil kod to bede wdzieczny:)
hmm problem jest w tym, ze zle zapisuje kolejke w rekordzie? jak to zrobic prawidlowo?:|