Лабораторная работа 9
Множества, строки
Цель работы: формирование умений и навыков в разработке сложных циклических алгоритмов обработки строк с использованием стандартных процедур и функций над строками; изучение типа данных «множество» и операций над данными этого типа.
Что нужно знать для выполнения работы
1. Стандартные процедуры и функции над строками. 2. Операции над множествами. 3. Особенности использования строк в качестве параметров в процедурах и функциях.
Примеры выполнения задания лабораторной работы
Пример 1. Составьте программу, находящую в данной строке символов длину самой длинной цепочки идущих подряд символов a.
Варианты решения
Вариант 1
program Project1; { Длина самой длинной цепочки а } {$APPTYPE CONSOLE } Uses SysUtils; Var st: string; procedure vvodstr(var st: string); // Ввод строки Var fin: TextFile; Begin AssignFile(fin, 'File1.txt'); Reset(fin); readln(fin, st); CloseFile(fin); end; function maxlena(st: string): integer; // Длина самой длинной цепочки из a Var td, md, i: integer; Begin md: =0; td: =0; st: =st+' '; for i: =1 to length(st) do Begin if st[i]='a' then inc(td) Else Begin Iftd> mdthen md: =td; td: =0; end; end; maxlena: =md; end; procedure vivodres; // Вывод результата Var fout: TextFile; Begin AssignFile(fout, 'File2.txt'); Rewrite(fout); writeln(fout, 'maxa= ', maxlena(st)); CloseFile(fout); end; Begin vvodstr(st); vivodres; End.
Вариант 2
program Project1; { Длина самой длинной цепочки а } {$APPTYPE CONSOLE}
Uses SysUtils;
Var st: string;
procedure vvodstr(var st: string); // Ввод строки Var fin: TextFile; Begin AssignFile(fin, 'File1.txt'); Reset(fin); readln(fin, st); CloseFile(fin); end; function maxlena(st: string): integer; // Длина самой длинной цепочки из a Var td, md, i: integer; Begin md: =0; td: =0; delete(st, 1, pos('a', st)-1); While pos('a', st)< > 0 do if pos('a', st)=1 then Begin delete(st, 1, 1); inc(td); End Else Begin If td> md then md: =td; td: =0; delete(st, 1, pos('a', st)-1); end; If td> md then md: =td; maxlena: =md; end;
procedure vivodres; // Вывод результата Var fout: TextFile; Begin AssignFile(fout, 'File2.txt'); Rewrite(fout); writeln(fout, 'maxa= ', maxlena(st)); CloseFile(fout); end; Begin vvodstr(st); vivodres; end. Вариант 3 program Project1; { Длина самой длинной цепочки а } {$APPTYPE CONSOLE}
Uses SysUtils;
Var st: string; procedure vvodstr(var st: string); // Ввод строки Var fin: TextFile; Begin AssignFile(fin, 'File1.txt'); Reset(fin); readln(fin, st); CloseFile(fin); end;
function maxlena(st: string): integer; // Длина самой длинной цепочки из a Var i, md: Integer; mn: set of byte; Begin mn: =[]; md: =0; for i: =1 to length(st) do if st[i]='a' then Begin inc(md); mn: =mn+[md]; End Else md: =0; If mn< > []then Begin for i: = length(st) downto 1 do If i in mnthen Begin maxlena: =i; break; { Выход из цикла } end; End Else maxlena: =0; end;
procedure vivodres; // Вывод результата Var fout: TextFile; Begin AssignFile(fout, 'File2.txt'); Rewrite(fout); Writeln(fout, 'maxa= ', maxlena(st)); CloseFile(fout); end; Begin vvodstr(st); vivodres; End.
Вариант 4 program Project1; { Длина самой длинной цепочки а } {$APPTYPE CONSOLE}
Uses SysUtils;
Var st: string; procedur e vvodstr(va r st: string); // Ввод строки Var fin: TextFile; Begin AssignFile(fin, 'File1.txt'); Reset(fin); readln(fin, st); CloseFile(fin); end;
function maxlena(st: string): integer; // Длина самой длинной цепочки из a Var ts: string; Begin ts: ='a';
|