Лабораторная работа 9Множества, строки
Цель работы: формирование умений и навыков в разработке сложных циклических алгоритмов обработки строк с использованием стандартных процедур и функций над строками; изучение типа данных «множество» и операций над данными этого типа.
Что нужно знать для выполнения работы
1. Стандартные процедуры и функции над строками. 2. Операции над множествами. 3. Особенности использования строк в качестве параметров в процедурах и функциях.
Примеры выполнения задания лабораторной работы
Пример 1. Составьте программу, находящую в данной строке символов длину самой длинной цепочки идущих подряд символов a.
Варианты решения
Вариант 1
programProject1; {Длина самой длинной цепочки а} {$APPTYPE CONSOLE} Uses SysUtils; Var st:string; procedure vvodstr(varst:string); //Ввод строки Var fin:TextFile; Begin AssignFile(fin,'File1.txt'); Reset(fin); readln(fin,st); CloseFile(fin); end; functionmaxlena(st:string):integer; //Длина самой длинной цепочки из a Var td,md,i:integer; Begin md:=0; td:=0; st:=st+' '; for i:=1tolength(st)do Begin ifst[i]='a'then inc(td) Else Begin Iftd>mdthen md:=td; td:=0; end; end; maxlena:=md; end; procedurevivodres; // Вывод результата 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 ifst[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;
procedurevivodres; // Вывод результата Var fout:TextFile; Begin AssignFile(fout,'File2.txt'); Rewrite(fout); Writeln(fout,'maxa= ',maxlena(st)); CloseFile(fout); end; Begin vvodstr(st); vivodres; End.
Вариант 4 programProject1; {Длина самой длинной цепочки а} {$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 ts:string; Begin ts:='a'; Поможем в написании учебной работы
|