Advertisement
wojtas626

[PAS] Listy

Dec 7th, 2014
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.62 KB | None | 0 0
  1. program Project1;
  2.  
  3. uses
  4.     crt, DOS;
  5. type
  6.   listPtr = ^list;
  7.  
  8.   list = record
  9.   next: listPtr;
  10.   name: String;
  11.   points: Double;
  12.   end;
  13.  
  14. procedure listStartAdd(var listStart: listPtr; var listEnd: listPtr);
  15. var
  16.    newElement: listPtr;
  17. begin
  18.      clrScr;
  19.      newElement := listStart;
  20.      if listStart = NIL then
  21.      begin
  22.           New(listStart);
  23.           writeLn('Wprowadz nazwisko: ');
  24.           readLn(listStart^.name);
  25.           writeLn('Wprowadz liczbe punktow: ');
  26.           readLn(listStart^.points);
  27.           listStart^.next := listEnd;
  28.      end else
  29.      begin
  30.           new(newElement);
  31.           newElement^.next := listStart;
  32.           listStart := newElement;
  33.           writeLn('Wprowadz nazwisko: ');
  34.           readLn(newElement^.name);
  35.           writeLn('Wprowadz liczbe punktow: ');
  36.           readLn(newElement^.points);
  37.           writeLn('Niepoprawne dane!');
  38.      end;
  39. end;
  40.  
  41. procedure listEndAdd(var listStart: listPtr; var listEnd: listPtr);
  42. var
  43.    newElement: listPtr;
  44. begin
  45.      clrScr;
  46.      newElement := listStart;
  47.      if listStart = NIL then
  48.      begin
  49.           New(newElement);
  50.           writeLn('Wprowadz nazwisko: ');
  51.           readLn(newElement^.name);
  52.           writeLn('Wprowadz liczbe punktow: ');
  53.           readLn(newElement^.points);
  54.           newElement^.next := listEnd;
  55.           listStart := newElement;
  56.      end else
  57.      begin
  58.           while newElement^.next <> NIL do
  59.           begin
  60.                newElement := newElement^.next;
  61.           end;
  62.           New(newElement^.next);
  63.           newElement := newElement^.next;
  64.           writeLn('Wprowadz nazwisko: ');
  65.           readLn(newElement^.name);
  66.           writeLn('Wprowadz liczbe punktow: ');
  67.           readLn(newElement^.points);
  68.           newElement^.next := listEnd;;
  69.      end;
  70. end;
  71.  
  72. procedure ListStartdelete(var listStart: listPtr);
  73. var
  74.    pointer: listPtr;
  75. begin
  76.      if listStart = NIL then
  77.      begin
  78.           clrScr;
  79.           writeLn('Nie moge usunac - lista pusta!');
  80.           writeLn;
  81.           writeLn('Nacisnij dowolny klawisz, aby powrocic do menu...');
  82.           ReadKey;
  83.      end else
  84.      begin
  85.           pointer := listStart;
  86.           listStart := pointer^.next;
  87.           dispose(pointer);
  88.      end;
  89. end;
  90.  
  91. procedure listEndDelete(var listStart: listPtr; var listEnd: listPtr);
  92. var
  93.    pointer1, pointer2: listPtr;
  94. begin
  95.      if listStart = NIL then
  96.      begin
  97.           clrScr;
  98.           writeLn('Nie moge usunac - lista pusta!');
  99.           writeLn;
  100.           writeLn('Nacisnij dowolny klawisz, aby powrocic do menu...');
  101.           ReadKey;
  102.      end else
  103.      begin
  104.           pointer1 := listStart;
  105.           while pointer1^.next <> NIL do
  106.           begin
  107.                pointer2 := pointer1;
  108.                pointer1 := pointer1^.next;
  109.                if pointer1^.next = NIL then
  110.           end;
  111.           pointer2^.next := listEnd;
  112.           dispose(pointer1);
  113.      end;
  114. end;
  115.  
  116. procedure listClear(var listStart: listPtr);
  117. var
  118.    pointer: listPtr;
  119. begin
  120.      while listStart <> NIL do
  121.      begin
  122.           pointer := listStart;
  123.           listStart := pointer^.next;
  124.           dispose(pointer);
  125.      end;
  126. end;
  127.  
  128. procedure listShow(var listStart: listPtr);
  129. var
  130.    pointer: listPtr;
  131. begin
  132.      clrScr;
  133.      pointer := listStart;
  134.      if pointer = NIL then
  135.      begin
  136.           writeLn('Lista pusta!');
  137.      end else
  138.      begin
  139.           writeLn('Nazwisko: ', pointer^.name);
  140.           writeLn('Punkty: ', pointer^.points:0:1);
  141.  
  142.           while pointer^.next <> NIL do
  143.           begin
  144.                pointer := pointer^.next;
  145.                writeLn('Nazwisko: ', pointer^.name);
  146.                writeLn('Punkty: ', pointer^.points:0:1);
  147.           end;
  148.      end;
  149.      writeLn;
  150.      writeLn('Nacisnij dowolny klawisz, aby powrocic do menu...');
  151.      ReadKey;
  152. end;
  153.  
  154. procedure findLargest(var listStart: listPtr);
  155. var
  156.    pointer: listPtr;
  157.    largest: Double;
  158.    foundName: String;
  159. begin
  160.      clrScr;
  161.      pointer := listStart;
  162.      if pointer = NIL then
  163.      begin
  164.           writeLn('Lista pusta!');
  165.      end else
  166.      begin
  167.           largest := pointer^.points;
  168.           foundName := pointer^.name;
  169.           while pointer^.next <> NIL do
  170.           begin
  171.                pointer := pointer^.next;
  172.                if pointer^.points > largest then
  173.                begin
  174.                     largest := pointer^.points;
  175.                     foundName := pointer^.name;
  176.                end;
  177.           end;
  178.           writeLn('Najwyzszy wynik to: ', largest:0:1);
  179.           writeLn('Uzyskal/a go: ', foundName);
  180.           writeLn;
  181.           writeLn('Nacisnij dowolny klawisz, aby powrocic do menu...');
  182.           ReadKey;
  183.      end;
  184. end;
  185.  
  186. procedure findLeast(var listStart: listPtr);
  187. var
  188.    pointer: listPtr;
  189.    least: Double;
  190.    foundName: String;
  191. begin
  192.      clrScr;
  193.      pointer := listStart;
  194.      if pointer = NIL then
  195.      begin
  196.           writeLn('Lista pusta!');
  197.      end else
  198.      begin
  199.           least := pointer^.points;
  200.           foundName := pointer^.name;
  201.           while pointer^.next <> NIL do
  202.           begin
  203.                pointer := pointer^.next;
  204.                if pointer^.points < least then
  205.                begin
  206.                     least := pointer^.points;
  207.                     foundName := pointer^.name;
  208.                end;
  209.           end;
  210.           writeLn('Najnizszy wynik to: ', least:0:1);
  211.           writeLn('Uzyskal/a go: ', foundName);
  212.           writeLn;
  213.           writeLn('Nacisnij dowolny klawisz, aby powrocic do menu...');
  214.           ReadKey;
  215.      end;
  216. end;
  217.  
  218. var
  219.    listStart, listEnd, pointer: listPtr;
  220.    choice: String;
  221. begin
  222.      listEnd:= NIL;
  223.      listStart := listEnd;
  224.  
  225.      while true do
  226.      begin
  227.           clrScr;
  228.           WriteLn('1. Dodaj element na poczatku listy');
  229.           WriteLn('2. Dodaj element na koncu listy');
  230.           WriteLn('3. Usun element z poczatku listy');
  231.           WriteLn('4. Usun element z konca listy');
  232.           WriteLn('5. Wyczysc liste');
  233.           WriteLn('6. Wyswietl cala liste');
  234.           WriteLn('7. Znajdz najmniejszy wynik');
  235.           WriteLn('8. Znajdz najwiekszy wynik');
  236.           WriteLn('9. Wyjscie');
  237.           ReadLn(choice);
  238.           case choice of
  239.           '1': listStartAdd(listStart, listEnd);
  240.           '2': listEndAdd(listStart, listEnd);
  241.           '3': listStartDelete(listStart);
  242.           '4': listEndDelete(listStart, listEnd);
  243.           '5': listClear(listStart);
  244.           '6': listShow(listStart);
  245.           '7': findLeast(listStart);
  246.           '8': findLargest(listStart);
  247.           '9': break;
  248.           end;
  249.      end;
  250. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement