Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 6.70 KB | None | 0 0
  1. program Project3;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R res.res}
  5.  
  6. uses
  7.   SysUtils, Windows, UnList in 'UnList.pas', UnVar in 'UnVar.pas';
  8.  
  9. procedure return(const r: TInfo; var s: string);
  10. begin
  11.   case r of
  12.     1:
  13.       s := 'Мария';
  14.     2:
  15.       s := 'Александра';
  16.     3:
  17.       s := 'Анастасия';
  18.     4:
  19.       s := 'Екатерина';
  20.     5:
  21.       s := 'Елена';
  22.     6:
  23.       s := 'Ирина';
  24.     7:
  25.       s := 'Светлана';
  26.     8:
  27.       s := 'Алена';
  28.     9:
  29.       s := 'Наталья';
  30.     10:
  31.       s := 'Полина';
  32.     11:
  33.       s := 'Валерия';
  34.     12:
  35.       s := 'Юлия';
  36.     13:
  37.       s := 'Галина';
  38.     14:
  39.       s := 'Анна';
  40.     15:
  41.       s := 'Ася';
  42.   end;
  43. end;
  44.  
  45. procedure AddR(var listB, listE: PElem; r: TInfo);
  46. var
  47.   listC: PElem;
  48.   s1, s2: string;
  49. begin
  50.   if listB = nil then
  51.     CreateList(listB, listE, r)
  52.   else
  53.   begin
  54.     return(r, s1);
  55.     return(listB^.info, s2);
  56.     if length(s1) <= length(s2) then
  57.       AddFirst(listB, listE, r)
  58.     else
  59.     begin
  60.       return(listE^.info, s2);
  61.       if length(s1) >= length(s2) then
  62.         AddLast(listB, listE, r)
  63.       else
  64.       begin
  65.         listC := listB;
  66.         return(listC^.info, s2);
  67.         while length(s1) > length(s2) do
  68.         begin
  69.           listC := listC^.next;
  70.           return(listC^.info, s2);
  71.         end;
  72.         listC := listC^.prev;
  73.         Add(listB, listC, listE, r)
  74.       end;
  75.     end;
  76.   end;
  77. end;
  78.  
  79. procedure AddN; // генерация N псевдослучайных элементов и добавление их в текущий список
  80. var
  81.   n, i: integer;
  82.   s: string;
  83.   r: TInfo;
  84. begin
  85.   write('Введите количество элементов - ');
  86.   readln(s);
  87.   while not trystrtoint(s, n) do
  88.   begin
  89.     write('Некорректный ввод, введетие еще раз: ');
  90.     readln(s);
  91.   end;
  92.  
  93.   for i := 1 to n do
  94.   begin
  95.     r := Random(10) + 1;
  96.     AddR(Blist, Elist, r);
  97.   end;
  98.  
  99.   writeln(#13#10'Список успешно создан'#13#10);
  100. end;
  101.  
  102. procedure AddFromTextFile; // создание списка из текстого файла
  103. var
  104.   f: TextFile;
  105.   fname: string[80];
  106.   r: TInfo;
  107. begin
  108.   write('Введите имя текстового файла (без расширения): ');
  109.   readln(fname);
  110.   write(#13#10);
  111.   assignfile(f, fname + '.txt');
  112.  
  113.   try
  114.     reset(f);
  115.     try
  116.       try
  117.         while not eof(f) do
  118.         begin
  119.           readln(f, r);
  120.           AddR(Blist, Elist, r);
  121.         end;
  122.         writeln('Список успешно создан'#13#10);
  123.       except
  124.         writeln('Некорректные данные в текстовом файле ' + fname +
  125.           '.txt'#13#10);
  126.       end;
  127.     finally
  128.       closefile(f);
  129.     end;
  130.   except
  131.     writeln('Ошибка - не удалось открыть текстовый файл ' + fname + '.txt');
  132.     write('Нажмите ENTER'#13#10);
  133.  
  134.     writeln;
  135.   end;
  136. end;
  137.  
  138. procedure Add1; // добавление элемента в список
  139. var
  140.   s: string;
  141.   r: TInfo;
  142. begin
  143.   write('Введите номер имени ("1" - Мария, "2" - Александра, "3" - Анастасия, "4" - Екатерина, "5" - Елена, "6" - Ирина, "7" - Светлана, "8" - Алена, "9" - Наталья, "10" - Полина): ');
  144.   readln(s);
  145.   while not trystrtoint(s, r) do
  146.   begin
  147.     write('Некорректный ввод, введетие еще раз: ');
  148.     readln(s);
  149.   end;
  150.  
  151.   AddR(Blist, Elist, r);
  152.  
  153.   writeln(#13#10'Элемент успешно добавлен'#13#10);
  154. end;
  155.  
  156. procedure Search; // поиск в списке
  157. var
  158.   listC: PElem;
  159.   t: boolean;
  160.   i: integer;
  161. begin
  162.   t := false;
  163.   i := 0;
  164.   listC := Elist;
  165.   while (listC <> nil) and (t = false) do
  166.   begin
  167.     inc(i);
  168.     if listC^.info = 1 then
  169.       t := true;
  170.     listC := listC^.prev;
  171.   end;
  172.   if t = false then
  173.     writeln('Нет ни одной записи "Мария" в списке'#13#10)
  174.   else
  175.     writeln('Найден элемент, удовлетворяющий условию, под номером - ', i, #13#10);
  176. end;
  177.  
  178. procedure ViewList; // просмотр списка
  179. var
  180.   listC: PElem;
  181.   s: string;
  182. begin
  183.   listC := Blist;
  184.   if listC = nil then
  185.     write('Список: пустой')
  186.   else
  187.   begin
  188.     write('Список в прямом порядке:'#13#10);
  189.     while listC <> nil do
  190.     begin
  191.       return(listC^.info, s);
  192.       write(#13#10, s);
  193.       listC := listC^.next;
  194.     end;
  195.  
  196.     writeln;
  197.     write(#13#10'Список в обратном порядке:'#13#10);
  198.     listC := Elist;
  199.     while listC <> nil do
  200.     begin
  201.       return(listC^.info, s);
  202.       write(#13#10, s);
  203.       listC := listC^.prev;
  204.     end;
  205.   end;
  206.  
  207.   writeln;
  208.   writeln;
  209. end;
  210.  
  211. var
  212.   a: char;
  213.  
  214. begin
  215.   setConsoleTitle('Лабораторная работа №3       Карелин Влад       A-04-18');
  216.   Randomize;
  217.  
  218.   repeat
  219.     writeln('===================================================================================');
  220.     writeln('1 - создание списка из текстого файла; ');
  221.     writeln('2 - генерация N псевдослучайных элементов и добавление их в текущий список; ');
  222.     writeln('3 - добавление элемента в список; ');
  223.     writeln('4 - поиск в списке;');
  224.     writeln('5 - очистка списка;');
  225.     writeln('6 - просмотр списка;');
  226.     writeln('0 - выход из программы');
  227.     write('Ваш выбор - ');
  228.     readln(a);
  229.     writeln('==================================================================================='#13#10);
  230.  
  231.     case a of
  232.       '1': // создание списка из текстого файла
  233.         AddFromTextFile;
  234.       '2': // генерация N псевдослучайных элементов и добавление их в текущий список
  235.         AddN;
  236.       '3': // добавление элемента в список
  237.         Add1;
  238.       '4': // поиск в списке
  239.         Search;
  240.       '5': // очистка списка
  241.         begin
  242.           FreeList(Blist, Elist);
  243.           writeln('Список успешно очищен');
  244.           writeln;
  245.         end;
  246.       '6': // просмотр списка
  247.         ViewList;
  248.       '0': // выход из программы
  249.         exit;
  250.     else
  251.       begin
  252.         writeln('Нет такой команды');
  253.         writeln('Нажмите ENTER');
  254.         readln;
  255.       end;
  256.     end;
  257.   until a = '0';
  258. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement