ks2
Posted on January 29, 2012, 9:39 am UTC anonymously (about 25 days ago)Code (highlighted for Pascal)
- program Untitled;
- type
- podlista = ^lista_2;
- lista_2 = record
- next : podlista;
- wartosc : integer;
- Autor,Tytul : string;
- end;
- plista = ^lista;
- lista = record
- Etykieta : string;
- lewy,prawy : plista;
- next,prev : plista;
- Autor,Tytul : string;
- wart : integer ;
- glowa_pod : podlista;
- end;
- var
- i,j,d : integer;
- napis : string;
- plik : text ;
- Autor,Tytul,Etykieta: string;
- licznik_srednikow : integer;
- glowa : plista;
- ogon : plista;
- {--------------------DODAWANIE AUTORA I TYTULU DO PODLISTY------------}
- procedure dodaj_pod_liste(var glowa : podlista; Autor,Tytul : string);
- var
- pnowy : podlista;
- begin
- new(pnowy);
- pnowy^.next := nil;
- pnowy^.Autor:=Autor;
- pnowy^.Tytul:=Tytul;
- if glowa = nil then
- begin
- glowa := pnowy;
- glowa^.Autor := Autor;
- glowa^.Tytul:= Tytul;
- end else
- begin
- pnowy^.next:=glowa;
- glowa:=pnowy;
- end;
- end;
- {-----------------------------DODAWANIE DO LISTY------------------}
- PROCEDURE dodaj(var glowa:plista; var ogon:plista; Etykieta:string);
- var
- element : plista;
- begin
- new(element);
- element^.Etykieta := Etykieta;
- element^.next := nil;
- element^.prev := nil;
- if ( glowa = nil ) then
- begin
- glowa := element;
- dodaj_pod_liste(glowa^.glowa_pod,Autor,Tytul);
- glowa^.Etykieta :=Etykieta;
- glowa^.next :=nil;
- glowa^.prev:=nil;
- ogon := element;
- end
- else
- begin
- ogon^.next := element;
- element^.prev := ogon;
- ogon := element;
- dodaj_pod_liste(ogon^.glowa_pod,Autor,Tytul);
- end;
- end;
- {-----------------------WYPISYWANIE POD LISTY----------------------}
- procedure wypisz_podliste(var glowa : podlista);
- begin
- writeln('------------DRUKUJE POD LISTE-------------------');
- while glowa <> nil do
- begin
- writeln('Autor : ',glowa^.Autor);
- writeln('Tytul : ',glowa^.Tytul);
- glowa:=glowa^.next;
- end;
- end;
- {--------------------------------WYPISYWANIE LISTY--------------}
- PROCEDURE wypisz(glowa:plista );
- begin
- writeln('----------DRUKUJE LISTE-----------------');
- while glowa<>nil do
- begin
- writeln('Etykieta ', glowa^.Etykieta);
- writeln('Autor ',glowa^.Autor);
- writeln('Tytul ',glowa^.Tytul);
- writeln;
- glowa:=glowa^.next;
- end;
- end;
- {-------------------------------------------------}
- {------------------------------------}
- procedure wypisz_calosc(glowa : plista);
- begin
- while glowa <> nil do
- begin
- writeln('------------------DRUKUJE LISTE----------------');
- writeln('Etykieta: ',glowa^.etykieta);
- writeln();
- wypisz_podliste(glowa^.glowa_pod);
- writeln();
- glowa:=glowa^.next;
- end;
- end;
- {-------------------------------------------------------------------}
- procedure szukaj(glowa : plista;Etykieta : string);
- var
- tmp : plista;
- licznik : integer;
- begin
- licznik:=0;
- while glowa <> nil do
- begin
- if (licznik = 0) AND (glowa^.etykieta = Etykieta) then
- begin
- tmp := glowa ;
- licznik := licznik + 1;
- glowa := glowa^.next;
- end;
- if glowa^.Etykieta = Etykieta then
- begin
- licznik:=licznik +1;
- end;
- if licznik >1 then
- begin
- dodaj_pod_liste(tmp^.glowa_pod,glowa^.glowa_pod^.Autor,glowa^.glowa_pod^.Tytul);
- end;
- glowa:=glowa^.next;
- end;
- end;
- procedure duza();
- begin
- assign(plik,'we.txt');
- reset(plik);
- while not eof(plik) do
- begin
- readln(plik,napis);
- writeln(napis);
- writeln('----------------');
- licznik_srednikow :=0;
- for i:=1 to length(napis) do
- if napis[i] = ';' then
- begin
- Autor:=copy(napis,1,i-1);
- writeln('Autor to : ',Autor);
- licznik_srednikow:=licznik_srednikow +1;
- break;
- end;
- if (licznik_srednikow = 1) then
- begin
- for j:=i+1 to length(napis) do
- begin
- if napis[j] = ';' then
- begin
- Tytul:= copy(napis,i+1,j-i-1);
- writeln('Tytul to : ',Tytul);
- licznik_srednikow:=licznik_srednikow+1;
- break;
- end;
- end;
- end;
- if(licznik_srednikow =2) then
- begin
- for d:=j+1 to length(napis) do
- begin
- if napis[d] = ';'then
- begin
- Etykieta:=copy(napis,j+1,d-j-1);
- writeln('Etykieta to : ',Etykieta);
- end;
- end;
- end;
- dodaj(glowa,ogon,Etykieta);
- szukaj(glowa,Etykieta);
- end;
- close(plik);
- writeln();
- end;
- begin
- duza;
- //wypisz(glowa);
- //sprawdz(glowa);
- wypisz_calosc(glowa);
- readln();
- end.