Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project3;
- {$APPTYPE CONSOLE}
- {$R res.res}
- uses
- SysUtils, Windows, UnList in 'UnList.pas', UnVar in 'UnVar.pas';
- procedure return(const r: TInfo; var s: string);
- begin
- case r of
- 1:
- s := 'Мария';
- 2:
- s := 'Александра';
- 3:
- s := 'Анастасия';
- 4:
- s := 'Екатерина';
- 5:
- s := 'Елена';
- 6:
- s := 'Ирина';
- 7:
- s := 'Светлана';
- 8:
- s := 'Алена';
- 9:
- s := 'Наталья';
- 10:
- s := 'Полина';
- 11:
- s := 'Валерия';
- 12:
- s := 'Юлия';
- 13:
- s := 'Галина';
- 14:
- s := 'Анна';
- 15:
- s := 'Ася';
- end;
- end;
- procedure AddR(var listB, listE: PElem; r: TInfo);
- var
- listC: PElem;
- s1, s2: string;
- begin
- if listB = nil then
- CreateList(listB, listE, r)
- else
- begin
- return(r, s1);
- return(listB^.info, s2);
- if length(s1) <= length(s2) then
- AddFirst(listB, listE, r)
- else
- begin
- return(listE^.info, s2);
- if length(s1) >= length(s2) then
- AddLast(listB, listE, r)
- else
- begin
- listC := listB;
- return(listC^.info, s2);
- while length(s1) > length(s2) do
- begin
- listC := listC^.next;
- return(listC^.info, s2);
- end;
- listC := listC^.prev;
- Add(listB, listC, listE, r)
- end;
- end;
- end;
- end;
- procedure AddN; // генерация N псевдослучайных элементов и добавление их в текущий список
- var
- n, i: integer;
- s: string;
- r: TInfo;
- begin
- write('Введите количество элементов - ');
- readln(s);
- while not trystrtoint(s, n) do
- begin
- write('Некорректный ввод, введетие еще раз: ');
- readln(s);
- end;
- for i := 1 to n do
- begin
- r := Random(10) + 1;
- AddR(Blist, Elist, r);
- end;
- writeln(#13#10'Список успешно создан'#13#10);
- end;
- procedure AddFromTextFile; // создание списка из текстого файла
- var
- f: TextFile;
- fname: string[80];
- r: TInfo;
- begin
- write('Введите имя текстового файла (без расширения): ');
- readln(fname);
- write(#13#10);
- assignfile(f, fname + '.txt');
- try
- reset(f);
- try
- try
- while not eof(f) do
- begin
- readln(f, r);
- AddR(Blist, Elist, r);
- end;
- writeln('Список успешно создан'#13#10);
- except
- writeln('Некорректные данные в текстовом файле ' + fname +
- '.txt'#13#10);
- end;
- finally
- closefile(f);
- end;
- except
- writeln('Ошибка - не удалось открыть текстовый файл ' + fname + '.txt');
- write('Нажмите ENTER'#13#10);
- writeln;
- end;
- end;
- procedure Add1; // добавление элемента в список
- var
- s: string;
- r: TInfo;
- begin
- write('Введите номер имени ("1" - Мария, "2" - Александра, "3" - Анастасия, "4" - Екатерина, "5" - Елена, "6" - Ирина, "7" - Светлана, "8" - Алена, "9" - Наталья, "10" - Полина): ');
- readln(s);
- while not trystrtoint(s, r) do
- begin
- write('Некорректный ввод, введетие еще раз: ');
- readln(s);
- end;
- AddR(Blist, Elist, r);
- writeln(#13#10'Элемент успешно добавлен'#13#10);
- end;
- procedure Search; // поиск в списке
- var
- listC: PElem;
- t: boolean;
- i: integer;
- begin
- t := false;
- i := 0;
- listC := Elist;
- while (listC <> nil) and (t = false) do
- begin
- inc(i);
- if listC^.info = 1 then
- t := true;
- listC := listC^.prev;
- end;
- if t = false then
- writeln('Нет ни одной записи "Мария" в списке'#13#10)
- else
- writeln('Найден элемент, удовлетворяющий условию, под номером - ', i, #13#10);
- end;
- procedure ViewList; // просмотр списка
- var
- listC: PElem;
- s: string;
- begin
- listC := Blist;
- if listC = nil then
- write('Список: пустой')
- else
- begin
- write('Список в прямом порядке:'#13#10);
- while listC <> nil do
- begin
- return(listC^.info, s);
- write(#13#10, s);
- listC := listC^.next;
- end;
- writeln;
- write(#13#10'Список в обратном порядке:'#13#10);
- listC := Elist;
- while listC <> nil do
- begin
- return(listC^.info, s);
- write(#13#10, s);
- listC := listC^.prev;
- end;
- end;
- writeln;
- writeln;
- end;
- var
- a: char;
- begin
- setConsoleTitle('Лабораторная работа №3 Карелин Влад A-04-18');
- Randomize;
- repeat
- writeln('===================================================================================');
- writeln('1 - создание списка из текстого файла; ');
- writeln('2 - генерация N псевдослучайных элементов и добавление их в текущий список; ');
- writeln('3 - добавление элемента в список; ');
- writeln('4 - поиск в списке;');
- writeln('5 - очистка списка;');
- writeln('6 - просмотр списка;');
- writeln('0 - выход из программы');
- write('Ваш выбор - ');
- readln(a);
- writeln('==================================================================================='#13#10);
- case a of
- '1': // создание списка из текстого файла
- AddFromTextFile;
- '2': // генерация N псевдослучайных элементов и добавление их в текущий список
- AddN;
- '3': // добавление элемента в список
- Add1;
- '4': // поиск в списке
- Search;
- '5': // очистка списка
- begin
- FreeList(Blist, Elist);
- writeln('Список успешно очищен');
- writeln;
- end;
- '6': // просмотр списка
- ViewList;
- '0': // выход из программы
- exit;
- else
- begin
- writeln('Нет такой команды');
- writeln('Нажмите ENTER');
- readln;
- end;
- end;
- until a = '0';
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement