Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.15 KB | None | 0 0
  1. program zadstos;
  2. uses
  3. crt,SysUtils;
  4.  
  5. type
  6.   wskaznik_stosu = ^skladnik_stosu;
  7.   skladnik_stosu = record
  8.     Dane:string;
  9.     imie: string[25];
  10.     nazwisko: string[40];
  11.     wiek: byte;
  12.     PESEL: string[11];
  13.     wskaznik: wskaznik_stosu;
  14.     end;
  15.  
  16.   var
  17.     wierzcholek,punkt:wskaznik_stosu;
  18.     i:integer;
  19.  
  20. function menu:char;
  21. begin
  22.   clrscr;
  23.   writeln('[D] Dodawanie na stos');
  24.   writeln('[W] Wyswietlanie stosu');
  25.   writeln('[X] Kasowanie stosu');
  26.   writeln('[Z] Zapisywanie do pliku');
  27.   writeln('[U] Usuwanie elementu');
  28.   writeln('[K] Koniec programu');
  29.   menu:=upcase(readkey);
  30.   end;
  31.  procedure dodawanie;
  32. var
  33.    znak:char;
  34. begin
  35. repeat
  36. if i=0 then
  37. begin
  38.      clrscr;
  39.      i:=1;
  40.      new(wierzcholek);
  41.      write('Dane: ');
  42.      readln(wierzcholek^.dane);
  43.      write('Imie: ');
  44.      readln(wierzcholek^.imie);
  45.      write('Nazwisko: ');
  46.      readln(wierzcholek^.nazwisko);
  47.      write('Wiek: ');
  48.      readln(wierzcholek^.wiek);
  49.      write('PESEL: ');
  50.      readln(wierzcholek^.PESEL);
  51.      wierzcholek^.wskaznik:=nil;
  52.      punkt:=wierzcholek;
  53.      writeln('N - konczy, inny kontynuuje');
  54.      znak:=upcase(readkey);
  55. end
  56. else
  57.  if i<>0 then
  58.  begin
  59.      clrscr;
  60.      new(wierzcholek);
  61.      write('Dane: ');
  62.      readln(wierzcholek^.dane);
  63.      write('Imie: ');
  64.      readln(wierzcholek^.imie);
  65.      write('Nazwisko: ');
  66.      readln(wierzcholek^.nazwisko);
  67.      write('Wiek: ');
  68.      readln(wierzcholek^.wiek);
  69.      write('PESEL: ');
  70.      readln(wierzcholek^.PESEL);
  71.      wierzcholek^.wskaznik:=punkt;
  72.      punkt:=wierzcholek;
  73.      writeln('N - konczy, inny kontynuuje');
  74.      znak:=upcase(readkey);
  75.  end;
  76. until znak='N';
  77. end;
  78.  
  79. procedure wyswietlanie;
  80. begin
  81.      clrscr;
  82.   punkt:=wierzcholek;
  83.   If(length(punkt^.nazwisko))>5 then writeln('wyraz ma wiecej znakow niz 5')
  84.        else writeln('wyraz ma mniej znakow niz 5');
  85.   while punkt<>nil do
  86.      begin
  87.       writeln(punkt^.dane);
  88.       writeln('Imie: ',punkt^.imie);
  89.       writeln('Nazwisko: ',punkt^.nazwisko);
  90.       writeln('Wiek: ',punkt^.wiek);
  91.       writeln('PESEL: ',punkt^.PESEL);
  92.       writeln('---------------------');
  93.       punkt:=punkt^.wskaznik;
  94.       end;
  95.   writeln('Nacisnij ENTER, aby kontynuowac...');
  96.   readln;
  97. end;
  98. procedure kasowanie;
  99. var
  100.    temp:wskaznik_stosu;
  101.    begin
  102.      clrscr;
  103.      punkt:=wierzcholek;
  104.      while punkt <> nil do
  105.            begin
  106.                 dispose(wierzcholek);
  107.                 punkt:=wierzcholek^.wskaznik;
  108.                 wierzcholek:=punkt;
  109.            end;
  110.       writeln('Stos skasowany');
  111.       i:=0;
  112.       readln;
  113. end;
  114.  
  115. Procedure Zapisywanie;
  116. var
  117.   txtFile:textfile;
  118.   numer:integer;
  119.   nazwisko:string;
  120. begin
  121.   if punkt=nil then writeln('Nie mozesz nic zapisac do pliku, poniewaz stos jest pusty!')
  122.   else
  123.   begin
  124.      repeat
  125.         writeln('Wybierz jakie elementy mam umiescic w pliku:');
  126.         writeln('1) Wszystkie elementy stosu');
  127.         writeln('2) Elementy o wybranym nazwisku');
  128.         writeln('3) Osoby pelnoletnie');
  129.         readln(numer);
  130.      until (numer=1) or (numer=2) or (numer=3);
  131.      if(numer=2) then
  132.      begin
  133.        writeln('Podaj nazwisko:');
  134.        readln(nazwisko);
  135.      end;
  136.      assignfile(txtFile, 'stos.txt');
  137.      rewrite(txtFile);
  138.      writeln('Zapisuje...');
  139.      repeat
  140.        begin
  141.          if(numer=1) then
  142.          begin
  143.           writeln(txtFile,'Imie: ',punkt^.imie);
  144.           writeln(txtFile,'Nazwisko: ',punkt^.nazwisko);
  145.           writeln(txtFile,'Wiek: ',punkt^.wiek);
  146.           writeln(txtFile,'PESEL: ',punkt^.PESEL);
  147.           writeln(txtFile,'---------------------');
  148.          end;
  149.          if(numer=2) and (punkt^.nazwisko=nazwisko) then
  150.          begin
  151.           writeln(txtFile,'Imie: ',punkt^.imie);
  152.           writeln(txtFile,'Nazwisko: ',punkt^.nazwisko);
  153.           writeln(txtFile,'Wiek: ',punkt^.wiek);
  154.           writeln(txtFile,'PESEL: ',punkt^.PESEL);
  155.           writeln(txtFile,'---------------------');
  156.          end;
  157.          if(numer=3) and (punkt^.wiek>=18) then
  158.          begin
  159.           writeln(txtFile,'Imie: ',punkt^.imie);
  160.           writeln(txtFile,'Nazwisko: ',punkt^.nazwisko);
  161.           writeln(txtFile,'Wiek: ',punkt^.wiek);
  162.           writeln(txtFile,'PESEL: ',punkt^.PESEL);
  163.           writeln(txtFile,'---------------------');
  164.          end;
  165.          punkt:=punkt^.wskaznik;
  166.        end;
  167.      until punkt=nil;
  168.      writeln('Zapisano!');
  169.     closefile(txtFile);
  170.     end;
  171.     writeln('N - konczy, inny kontynuuje');
  172.     readln;
  173. end;
  174. procedure usun;
  175. var
  176.   temp:wskaznik_stosu;
  177. begin
  178.     wierzcholek:=punkt;
  179.     if wierzcholek<>nil then
  180.     begin
  181.       temp:=wierzcholek;
  182.       wierzcholek:=punkt^.wskaznik;
  183.       dispose(temp);
  184.       writeln('Usunieto pierwszy element ze stosu.');
  185.     end
  186.     else writeln('Nie mozesz nic usunac, poniewaz stos jest pusty!');
  187.     if punkt=nil then wierzcholek:=nil;
  188.     writeln('Nacisnij ENTER, aby kontynuowac...');
  189.     readln;
  190. end;
  191.  
  192.  
  193. begin
  194. i:=0;
  195. repeat
  196. clrscr;
  197. case menu of
  198.      'D':dodawanie;
  199.      'X':kasowanie;
  200.      'W':wyswietlanie;
  201.      'Z':Zapisywanie;
  202.      'U':Usun;
  203.      'K':halt;
  204. end;
  205. until false;
  206. readln;
  207. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement