Advertisement
Guest User

ArrayOfRecords

a guest
Dec 17th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.26 KB | None | 0 0
  1. program ArrayOfRecords4;
  2.  
  3. uses
  4.   crt;
  5.  
  6. type
  7.   pSubListItem = ^TSubListItem;
  8.   TSubListItem = record
  9.     info : integer;
  10.     next : pSubListItem;
  11.   end;
  12.   pSubList = ^TSubList;
  13.   TSubList = record
  14.     pFirst : pSubListItem;
  15.  
  16.   end;
  17.   TMainArray = array[1..4] of pSubList;
  18.  
  19. var
  20.   mArray : array[1..4] of pSubList;
  21.   pTemp : pSubListItem;
  22.   countOfSubLists, i, ii, element : integer;
  23.   answer, answer2, answer3 : byte;
  24.  
  25. procedure whileOutput(pTempL : pSubListItem);
  26. begin
  27.   while (pTempL <> nil) do
  28.   begin
  29.     write(pTempL^.info);
  30.     pTempL := pTempL^.next;
  31.     if (pTempL = nil) then break;
  32.     write(' ');
  33.   end;
  34. end;
  35.  
  36. procedure output;
  37. begin                                               // []
  38.   writeln('  Current array of records:');           // [22 33]
  39.   for i := 1 to 4 do                                // [55]
  40.   begin
  41.     //if (mArray[i]^.pFirst <> nil) then
  42.     pTemp := mArray[i]^.pFirst;
  43.     //write(pTemp <> nil);
  44.     write(i, ' sublist: [');
  45.     //if mArray[1]^.pFirst^.info = ;
  46.     //whileOutput(pTemp);
  47.     while (pTemp <> nil) do
  48.     begin
  49.       //writeln('what`s up bro');
  50.       write(pTemp^.info);
  51.       pTemp := pTemp^.next;
  52.       if (pTemp = nil) then break;
  53.       write(' ');
  54.     end;
  55.     writeln(']');
  56.     //write('----- ');
  57.     //for ii := 1 to 4 do
  58.     //if (mArray[ii]^.pFirst <> nil) then write(ii, '-', mArray[ii]^.pFirst^.info);
  59.     //writeln(' -----');
  60.   end;
  61. end;
  62.  
  63. procedure outputSubList(subList : integer);
  64. begin
  65.   pTemp := mArray[subList]^.pFirst;
  66.   write(subList, ' sublist: [');
  67.   //whileOutput(pTemp);
  68.   while (pTemp <> nil) do               // занести while как отдельную процедуру
  69.     begin
  70.       write(pTemp^.info);
  71.       pTemp := pTemp^.next;
  72.       if (pTemp = nil) then break;
  73.       write(' ');
  74.     end;
  75.   writeln(']');
  76. end;
  77.  
  78. function back(ans : integer) : boolean;
  79. begin
  80.   if (ans = 11) then back := true else back := false;
  81. end;
  82.  
  83. procedure addAfter(ans, element : integer);
  84. var
  85.   pTempPrev : pSubListItem;
  86.   afterElement : integer;
  87. begin
  88.   new(pTemp);
  89.   pTemp^.info := element;
  90.   if (mArray[ans]^.pFirst = nil) then
  91.   begin
  92.     pTemp^.next := nil;
  93.     mArray[ans]^.pFirst := pTemp;
  94.   end else                // ans sublist: [22 33 11 55]
  95.   begin
  96.     write('  Enter the element after which add new element: ');
  97.     readln(afterElement);
  98.     pTempPrev := mArray[ans]^.pFirst;
  99.     while (pTempPrev^.info <> afterElement) do
  100.     begin
  101.       pTempPrev := pTempPrev^.next;
  102.     end;
  103.     if (pTempPrev^.next <> nil) then pTemp^.next := pTempPrev^.next;
  104.     pTempPrev^.next := pTemp;
  105.   end;
  106. end;
  107.  
  108. procedure remove(ans : integer);
  109. var
  110.   pTempPrev, pTempHelp : pSubListItem;
  111.   element : integer;
  112. begin
  113.   write('  Enter the element to remove: ');
  114.   readln(element);
  115.   pTempPrev := mArray[ans]^.pFirst;
  116.   while (pTempPrev^.info <> element) do
  117.   begin
  118.     pTempHelp := pTempPrev;
  119.     pTempPrev := pTempPrev^.next;   // [22 33 55 66 11]
  120.   end;
  121.   if (pTempPrev = mArray[ans]^.pFirst) then
  122.   begin
  123.     mArray[ans]^.pFirst := mArray[ans]^.pFirst^.next;
  124.   end else
  125.   begin
  126.     pTempHelp^.next := pTempHelp^.next^.next;
  127.   end;
  128. end;
  129.  
  130. begin
  131.   for i := 1 to 4 do
  132.   begin
  133.     new(mArray[i]);
  134.     mArray[i]^.pFirst := nil;
  135.   end;
  136.   countOfSubLists := 0;
  137.   repeat
  138.   begin
  139.     writeln('1. Choose the sublist to add or remove element(s): ');
  140.     writeln('2. Removing');
  141.     writeln('3. Output');
  142.     writeln('11. Exit');
  143.     readln(answer);
  144.     case answer of
  145.     //begin
  146.       1:
  147.       begin
  148.         output;
  149.         write('  Choose the sublist to add element(s)(from 1 to 4): ');
  150.         readln(answer2);
  151.         repeat
  152.           outputSubList(answer2);
  153.           writeln('1. Add elements to sublist after element');
  154.           writeln('2. Remove elements from current sublist');
  155.           writeln('11. Back');
  156.           readln(answer3);
  157.           case answer3 of
  158.             1:                                      // 1 sublist: [22 33]
  159.             begin
  160.               write('  Enter the new element: ');
  161.               readln(element);
  162.               addAfter(answer2, element);
  163.             end;
  164.             2:
  165.             begin
  166.               outputSubList(answer2);
  167.               remove(answer2);
  168.             end;
  169.           end;
  170.         until (answer3 = 11);
  171.       end;
  172.       2:
  173.       begin
  174.         repeat
  175.           output;
  176.           writeln('1. Remove elements from sublist');
  177.           writeln('2. Remove sublist');
  178.           writeln('3. Remove all sublists');
  179.           writeln('11. Back');
  180.           readln(answer2);
  181.           case answer2 of
  182.             1:
  183.             begin
  184.               write('  Choose the sublist: ');
  185.               readln(answer3);
  186.               outputSubList(answer3);
  187.               remove(answer3);
  188.             end;
  189.             2:
  190.             begin
  191.               write('  Choose the sublist: ');
  192.               readln(answer3);
  193.               mArray[answer3]^.pFirst := nil;
  194.             end;
  195.             3:
  196.             begin
  197.               for i := 1 to 4 do
  198.               begin
  199.                 mArray[i]^.pFirst := nil;
  200.               end;
  201.             end;
  202.           end;
  203.         until (answer2 = 11);
  204.       end;
  205.       3:
  206.       begin
  207.         output;
  208.       end;
  209.     end;
  210.   end until (answer = 11);
  211. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement