Advertisement
melnikovmaxim

KLENINA_List_menu

Jan 2nd, 2020
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.21 KB | None | 0 0
  1. type
  2.    liste = record
  3.       next: ^liste;
  4.       inf: integer;
  5.    end;
  6.    
  7.    list = record
  8.       list1, list2, list3, list4, list5: ^liste;
  9.    end;
  10.  
  11. var
  12.    listw: list;
  13.    i, inf, n: integer;
  14.    x: boolean;
  15.    s, s1: string;
  16.  
  17.  
  18.  
  19. procedure vvod(var listw: list; inf: integer);
  20. var
  21.    y: boolean;
  22. begin
  23.    begin
  24.       New(listw.list2^.next);
  25.       listw.list2^.inf := inf;
  26.       listw.list2 := listw.list2^.next;
  27.    end;
  28. end;
  29.  
  30. procedure vivod(listw: list);
  31. begin
  32.    writeln('Вывод списка элементов:');
  33.    while listw.list1^.next <> nil do
  34.    begin
  35.       Writeln(listw.list1^.inf);
  36.       listw.list1 := listw.list1^.next;
  37.    end;
  38.    writeln();
  39. end;
  40.  
  41. procedure udal(g: integer);
  42. var
  43.    l: integer;
  44. begin
  45.    if g > 1 then
  46.    begin
  47.       for l := 1 to g - 2 do
  48.          listw.list4 := listw.list4^.next;
  49.       if listw.list4^.next^.next = nil then
  50.       begin
  51.          listw.list4^.next := nil;
  52.          listw.list4 := listw.list4^.next;
  53.          dispose(listw.list4);
  54.       end
  55.             else
  56.       begin
  57.          listw.list4^.next := listw.list4^.next^.next;
  58.       end;
  59.      
  60.    end;
  61.    
  62.    if g = 1 then
  63.    begin
  64.       listw.list1 := listw.list1^.next;
  65.       dispose(listw.list4);
  66.    end;
  67. end;
  68.  
  69. procedure poisk(listw: list; g: integer);
  70. var
  71.    h: integer;
  72. begin
  73.    while listw.list1 <> nil do
  74.    begin
  75.       if listw.list1^.inf = g then
  76.       begin
  77.          writeln('Адрес элемента - "', listw.list1, '"');
  78.          h := h + 1;
  79.       end;
  80.       listw.list1 := listw.list1^.next;
  81.    end;
  82.    listw.list1 := listw.list4;
  83.    if h = 0 then
  84.       writeln('Таких элементов не найдено');
  85.    writeln();
  86. end;
  87.  
  88. procedure prov(listw: list; g: integer);
  89. var
  90.    h: integer;
  91. begin
  92.    while listw.list1 <> nil do
  93.    begin
  94.       if listw.list1^.inf = g then
  95.          h := h + 1;
  96.       listw.list1 := listw.list1^.next;
  97.    end;
  98.    if h = 0 then
  99.       writeln('Таких элементов в списке нет')
  100.    else
  101.       writeln('Таких элементов в списке - "', h, '"');
  102.    writeln();
  103. end;
  104.  
  105. begin
  106.    New(listw.list1);
  107.    listw.list2 := listw.list1;
  108.    New(listw.list3);
  109.    listw.list3 := listw.list1;
  110.    New(listw.list3);
  111.    listw.list4 := listw.list1;
  112.    New(listw.list5);
  113.    listw.list5 := listw.list1;
  114.    while x = false do
  115.    begin
  116.       writeln('#############################');
  117.       writeln('#           Меню            #');
  118.       writeln('# "1" - добавить элемент    #');
  119.       writeln('# "2" - удалить элемент     #');
  120.       writeln('# "3" - найти элемент       #');
  121.       writeln('# "4" - вывести список      #');
  122.       writeln('# "5" - проверка            #');
  123.       writeln('# "6" - выйти из программы  #');
  124.       writeln('#############################');
  125.       readln(n);
  126.       if n = 1 then
  127.       begin
  128.          listw.list1 := listw.list5;
  129.          writeln('Введите элемент (цифры)');
  130.          readln(i);
  131.          vvod(listw, i);
  132.          writeln('Вы успешно добавили элемент');
  133.          writeln();
  134.          writeln('Введите "Выход", чтобы выйти из программы, или просто нажмите "Enter", чтобы заново вызвать меню');
  135.          readln(s);
  136.          if (s = 'Выход') or (s = 'выход') then
  137.          begin
  138.             x := true;
  139.             writeln('Теперь вы можете выключить программу');
  140.          end;
  141.       end
  142.       else
  143.       if n = 2 then
  144.       begin
  145.          writeln('Введите номер элемента, который вы желаете удалить');
  146.          readln(i);
  147.          udal(i);
  148.          writeln();
  149.          writeln('Введите "Выход", чтобы выйти из программы, или просто нажмите "Enter", чтобы заново вызвать меню');
  150.          readln(s);
  151.          if (s = 'Выход') or (s = 'выход') then
  152.          begin
  153.             x := true;
  154.             writeln('Теперь вы можете выключить программу');
  155.          end;
  156.       end
  157.       else
  158.       if n = 3 then
  159.       begin
  160.          writeln('Введите элемент который вы хотите найти');
  161.          readln(i);
  162.          poisk(listw, i);
  163.          writeln();
  164.          writeln('Введите "Выход", чтобы выйти из программы, или просто нажмите "Enter", чтобы заново вызвать меню');
  165.          readln(s);
  166.          if (s = 'Выход') or (s = 'выход') then
  167.          begin
  168.             x := true;
  169.             writeln('Теперь вы можете выключить программу');
  170.          end;
  171.       end
  172.       else
  173.       if n = 4 then
  174.       begin
  175.          vivod(listw);
  176.          writeln();
  177.          writeln('Введите "Выход", чтобы выйти из программы, или просто нажмите "Enter", чтобы заново вызвать меню');
  178.          readln(s);
  179.          if (s = 'Выход') or (s = 'выход') then
  180.          begin
  181.             x := true;
  182.             writeln('Теперь вы можете выключить программу');
  183.          end;
  184.       end
  185.       else
  186.       if n = 5 then
  187.       begin
  188.          writeln('Введите значение элемента, на который вы хотите проверить список');
  189.          readln(i);
  190.          prov(listw, i);
  191.          writeln();
  192.          writeln('Введите "Выход", чтобы выйти из программы, или просто нажмите "Enter", чтобы заново вызвать меню');
  193.          readln(s);
  194.          if (s = 'Выход') or (s = 'выход') then
  195.          begin
  196.             x := true;
  197.             writeln('Теперь вы можете выключить программу');
  198.          end;
  199.       end
  200.       else
  201.       if n = 6 then
  202.       begin
  203.          x := true;
  204.          writeln('Теперь вы можете выключить программу');
  205.       end
  206.    end;
  207.    
  208.    
  209. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement