ks2

Posted on January 29, 2012, 9:39 am UTC anonymously (about 25 days ago)

Code (highlighted for Pascal)

  1.     program Untitled;
  2.    
  3.     type
  4.     podlista = ^lista_2;
  5.         lista_2 = record
  6.                 next : podlista;
  7.                 wartosc : integer;
  8.                 Autor,Tytul : string;
  9.                 end;
  10.      plista = ^lista;
  11.      lista = record
  12.        Etykieta : string;
  13.        lewy,prawy : plista;
  14.        next,prev : plista;
  15.        Autor,Tytul : string;
  16.        wart : integer ;
  17.        glowa_pod : podlista;
  18.      end;
  19.  
  20.        
  21.        
  22.     var
  23.     i,j,d : integer;
  24.     napis : string;
  25.     plik : text ;
  26.     Autor,Tytul,Etykieta: string;
  27.     licznik_srednikow : integer;
  28.     glowa : plista;
  29.     ogon : plista;
  30.    
  31.  
  32. {--------------------DODAWANIE AUTORA I TYTULU DO PODLISTY------------}
  33.  
  34. procedure dodaj_pod_liste(var glowa : podlista;  Autor,Tytul : string);
  35.         var
  36.                 pnowy : podlista;
  37.         begin
  38.                 new(pnowy);
  39.                 pnowy^.next := nil;
  40.                 pnowy^.Autor:=Autor;
  41.                 pnowy^.Tytul:=Tytul;
  42.                
  43.                 if glowa = nil then
  44.                         begin
  45.                                 glowa := pnowy;
  46.                                 glowa^.Autor := Autor;
  47.                                 glowa^.Tytul:= Tytul;
  48.                                
  49.                                
  50.                         end else
  51.                         begin
  52.                              
  53.                                 pnowy^.next:=glowa;
  54.                                 glowa:=pnowy;
  55.                                
  56.                         end;
  57.         end;
  58.        
  59.        
  60.            
  61. {-----------------------------DODAWANIE DO LISTY------------------}    
  62. PROCEDURE dodaj(var glowa:plista; var ogon:plista; Etykieta:string);
  63. var
  64. element : plista;
  65. begin
  66.  
  67.         new(element);
  68.        
  69.      
  70.         element^.Etykieta := Etykieta;
  71.         element^.next := nil;
  72.         element^.prev := nil;
  73.  
  74.         if ( glowa = nil ) then
  75.                 begin
  76.                         glowa := element;
  77.                         dodaj_pod_liste(glowa^.glowa_pod,Autor,Tytul);
  78.                        
  79.                         glowa^.Etykieta :=Etykieta;
  80.                         glowa^.next :=nil;
  81.                         glowa^.prev:=nil;
  82.                        
  83.                         ogon := element;
  84.                        
  85.                 end
  86.         else
  87.                 begin
  88.                  ogon^.next := element;
  89.                  element^.prev := ogon;
  90.                  ogon := element;
  91.                  dodaj_pod_liste(ogon^.glowa_pod,Autor,Tytul);
  92.                  
  93.                 end;
  94.        
  95.                
  96. end;
  97.  
  98.  
  99. {-----------------------WYPISYWANIE POD LISTY----------------------}
  100. procedure wypisz_podliste(var glowa : podlista);
  101. begin
  102.   writeln('------------DRUKUJE POD LISTE-------------------');
  103.   while glowa <> nil do
  104.     begin  
  105.      
  106.           writeln('Autor : ',glowa^.Autor);
  107.           writeln('Tytul : ',glowa^.Tytul);
  108.           glowa:=glowa^.next;
  109.         end;
  110. end;  
  111. {--------------------------------WYPISYWANIE LISTY--------------}
  112. PROCEDURE wypisz(glowa:plista );
  113.  
  114.  
  115. begin
  116.  
  117.    writeln('----------DRUKUJE LISTE-----------------');
  118.    while glowa<>nil do
  119.      begin
  120.      
  121.      writeln('Etykieta ', glowa^.Etykieta);
  122.      writeln('Autor ',glowa^.Autor);
  123.      writeln('Tytul ',glowa^.Tytul);
  124.      writeln;
  125.      glowa:=glowa^.next;
  126.  
  127.      end;
  128.      
  129.   end;
  130. {-------------------------------------------------}
  131.  
  132.  
  133.  
  134.    
  135. {------------------------------------}    
  136. procedure wypisz_calosc(glowa : plista);
  137. begin
  138.  
  139.   while glowa <> nil do
  140.     begin  
  141.       writeln('------------------DRUKUJE LISTE----------------');
  142.    
  143.       writeln('Etykieta: ',glowa^.etykieta);
  144.       writeln();
  145.       wypisz_podliste(glowa^.glowa_pod);
  146.       writeln();
  147.       glowa:=glowa^.next;
  148.     end;
  149. end;
  150. {-------------------------------------------------------------------}
  151.     procedure szukaj(glowa : plista;Etykieta : string);
  152.          var
  153.          tmp : plista;
  154.          licznik : integer;
  155.          begin
  156.            licznik:=0;
  157.            while glowa <> nil do
  158.              begin
  159.               if (licznik = 0) AND (glowa^.etykieta = Etykieta) then
  160.                           begin
  161.                               tmp := glowa ;
  162.                               licznik := licznik + 1;
  163.                               glowa := glowa^.next;
  164.                               end;
  165.                              
  166.                if glowa^.Etykieta = Etykieta then
  167.                  begin
  168.                    licznik:=licznik +1;
  169.                  end;
  170.            
  171.                if licznik >1 then
  172.                 begin
  173.                
  174.                 dodaj_pod_liste(tmp^.glowa_pod,glowa^.glowa_pod^.Autor,glowa^.glowa_pod^.Tytul);
  175.                 end;
  176.                             glowa:=glowa^.next;
  177.              end;
  178.          end;
  179.    
  180. procedure duza();  
  181.     begin
  182.      assign(plik,'we.txt');
  183.      reset(plik);
  184.      
  185.      
  186.      while not eof(plik) do
  187.      begin
  188.      readln(plik,napis);
  189.      writeln(napis);
  190.      writeln('----------------');
  191.      licznik_srednikow :=0;
  192.      for i:=1 to length(napis) do
  193.  
  194.        if napis[i] = ';' then
  195.           begin
  196.                Autor:=copy(napis,1,i-1);
  197.                writeln('Autor to : ',Autor);
  198.                licznik_srednikow:=licznik_srednikow +1;
  199.                        break;
  200.           end;
  201.              
  202.         if (licznik_srednikow = 1) then
  203.             begin
  204.                   for j:=i+1 to length(napis) do
  205.                      begin
  206.                           if napis[j] = ';' then
  207.                              begin
  208.                                   Tytul:= copy(napis,i+1,j-i-1);
  209.                                   writeln('Tytul to : ',Tytul);
  210.                                   licznik_srednikow:=licznik_srednikow+1;
  211.                                  
  212.                                                               break;
  213.                              end;
  214.                      end;
  215.             end;
  216.            
  217.         if(licznik_srednikow =2) then
  218.                 begin
  219.                   for d:=j+1 to length(napis) do
  220.                     begin
  221.                       if napis[d] = ';'then
  222.                         begin
  223.                           Etykieta:=copy(napis,j+1,d-j-1);
  224.                           writeln('Etykieta to : ',Etykieta);
  225.                         end;
  226.                     end;
  227.                 end;
  228.                 dodaj(glowa,ogon,Etykieta);
  229.                szukaj(glowa,Etykieta);
  230.                
  231.         end;
  232.      
  233.      
  234.      
  235.      close(plik);
  236.      writeln();
  237.  
  238.    
  239.  end;
  240.  
  241.  
  242.      
  243.          
  244.          
  245.          
  246.  
  247.  begin
  248.  
  249.      duza;
  250.      
  251.      //wypisz(glowa);
  252.      //sprawdz(glowa);
  253.    
  254.  
  255.    
  256.    wypisz_calosc(glowa);
  257.      readln();
  258.     end.
  259.