Дан линейный однонаправленный список L1
1) Разработать
функцию,
которая
переформирует список L1, переписав в начало
списка его часть, начиная с заданной позиции
(номер позиции передается в функцию).
2) Разработать функцию вставки узла в
упорядоченный по не возрастанию список.
Сформировать такой список L2.
3) Разработать функцию, которая удаляет
из L2 все повторяющиеся значения, оставляя
одно из них.
2. Отчет по разработанной программе
Условие задания, требования в соответствии с вариантом
1. Постановка задачи
2. Определение списка операций над списком, которые выявлены в
процессе исследования задач дополнительного задания.
2.1 Определить структуру узла однонаправленного списка
соответствии с вариантом.
2.2 Изобразить (рисунок) для каждой операции полученного списка
выполнения операции
существующем
процесс
однонаправленном списке.
2.3 Изобразите структуру данных, которая будет использоваться в
операциях.
2.4 Привести алгоритм выполнения операции
2.5 Привести таблицу тестов для тестирования каждой операции
3. Представить код программы
4. Представить результат тестирования программы: скриншоты
выполнения каждой операции.
5. Привести выводы по полученным знаниям и умениям
6. Список информационных источников, которые были использованы
при выполнении задания.
const
cs='бвгджз';
var
s:string;
i:integer;
c:char;
p,csg:set of char;
begin
Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');
Readln(s);
p:=[];
for i:=1 to Length(cs) do Include(csg,cs[i]); { инициализация множества }
s:=LowerCase(s); { приведение к нижнему регистру }
i:=1; c:=s[1];
while c<>'.' do begin
{ обработка нечетного слова }
while not (c in [',','.']) do begin
if (c in csg) and not (c in p) then Include(p,c);
i:=i+1;
c:=s[i]
end;
{ обработка четного слова }
if c<>'.' then begin i:=i+1; c:=s[i] end;
while not(c in [',','.']) do begin
if (c in csg) and (c in p) then Exclude(p,c);
i:=i+1;
c:=s[i]
end;
if c<>'.' then begin i:=i+1; c:=s[i] end
end;
s:='';
for i:=1 to Length(cs) do if cs[i] in p then Write(cs[i])
end.
Тестовое решение:
Введите текст, разделяя слова запятыми, в конце поставьте точку
Это,пример,текста,созданного,для,проверки,программы.
гд
Вариант для тех, кто с множествами не дружит:
const
cs='бвгджз';
var
s,p:string;
i,n:integer;
c:char;
begin
Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');
Readln(s);
p:=''; n:=Length(cs);
s:=LowerCase(s); { приведение к нижнему регистру }
i:=1; c:=s[1];
while c<>'.' do begin
{ обработка нечетного слова }
while (c<>',') and (c<>'.') do begin
if (Pos(c,cs)>0) and (Pos(c,p)=0) then p:=p+c;
i:=i+1;
c:=s[i]
end;
{ обработка четного слова }
if c<>'.' then begin i:=i+1; c:=s[i] end;
while (c<>',') and (c<>'.') do begin
if (Pos(c,cs)>0) and (Pos(c,p)=1) then p[Pos(c,p)]:='*';
i:=i+1;
c:=s[i]
end;
if c<>'.' then begin i:=i+1; c:=s[i] end
end;
for i:=1 to Length(cs) do if Pos(cs[i],p)>0 then Write(cs[i])
end.
Тестовое решение:
Введите текст, разделяя слова запятыми, в конце поставьте точку
Данная,фраза,предлагается,для,тестирования.
вг