Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
![](images/emoji__ok.png)
Предоплата всего
![](images/emoji__signature.png)
Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Практическое занятие (строки)
1. Разобрать процедуру GetWord, которая находит fp первую позицию слова, lp последнюю позицию слова в строке.
const Lat=['a'..'z','A'..'Z'];
Procedure GetWord(s:string;var fp,lp:integer);
begin
while (fp<=length(s)) and not (s[fp] in Lat) do fp:=fp+1;
lp:=fp;
while (lp<=length(s)) and (s[lp] in Lat) do lp:=lp+1;
lp:=lp-1;
end;
2. Решить задачу:
Дана строка символов. Заменить в тексте слово, содержащее заданный фрагмент на другое заданное слово, посчитать количество таких замен.
const Lat=['a'..'z','A'..'Z'];
Procedure GetWord(s:string;var fp,lp:integer);
begin
while (fp<=length(s)) and not (s[fp] in Lat) do fp:=fp+1;
lp:=fp;
while (lp<=length(s)) and (s[lp] in Lat) do lp:=lp+1;
lp:=lp-1;
end;
Procedure Alg(var s:string;fr,z:string; var k:integer);
var i,fp,lp:integer; word_: string;
begin
i:=1; k:=0;
while i<=length(s)do begin
fp:=i;
GetWord(s,fp,lp);
word_:= Copy (s,fp,lp-fp+1);
if Pos(fr,word_)>0 then begin
delete(s,fp,lp-fp+1);
insert(z,s,fp);
i:=fp+length(z)+1;
k:=k+1;
end
else
i:=lp+1;
end;
end;
var s,fr,z:string; k:integer;
begin
writeln('Введите строку'); Readln (s);
writeln('Введите фрагмент'); Readln (fr);
writeln('Введите новое слово'); Readln (z);
Alg(s,fr,z,k);
writeln(' Результат :',s);
writeln(' Кол-во :',k);
end.
3. Решить задачу:
Дана строка символов. Переписать наоборот каждое слово, посчитать количество слов.
const Lat=['a'..'z','A'..'Z'];
Procedure GetWord(s:string;var fp,lp:integer);
begin
while (fp<=length(s)) and not (s[fp] in Lat) do fp:=fp+1;
lp:=fp;
while (lp<=length(s)) and (s[lp] in Lat) do lp:=lp+1;
lp:=lp-1;
end;
Procedure Change(var s:string);
var i,l:integer; c:char;
begin
l:=length(s);
for i:=1 to l div 2 do begin
c:=s[i]; s[i]:=s[l-i+1]; s[l-i+1]:=c;
end;
end;
Procedure Alg(var s:string; var k: integer);
var i,fp,lp:integer; word_: string;
begin
i:=1; k:=0;
while i<=length(s)do begin
fp:=i;
GetWord(s,fp,lp);
word_:= Copy(s,fp,lp-fp+1);
change(word_);
delete(s,fp,lp-fp+1);
insert(word_,s,fp);
i:=lp+1;
k:=k+1;
end;
end;
var s:string; k:integer;
begin
writeln('Введите строку');
Readln (s);
Alg(s,k);
writeln('Результат :',s);
writeln('Количество слов:',k);
end.
4. Решить задачу:
Дана строка символов. Найти и вывести на экран слова, начинающиеся и заканчивающиеся одной и той же буквой, посчитать количество таких слов.
const Lat=['a'..'z','A'..'Z'];
Procedure GetWord(s:string;var fp,lp:integer);
begin
while (fp<=length(s)) and not (s[fp] in Lat) do fp:=fp+1;
lp:=fp;
while (lp<=length(s)) and (s[lp] in Lat) do lp:=lp+1;
lp:=lp-1;
end;
Procedure Alg(var s:string; var k: integer);
var i,fp,lp:integer; word_: string;
begin
i:=1; k:=0;
while i<=length(s)do begin
fp:=i;
GetWord(s,fp,lp);
word_:= Copy(s,fp,lp-fp+1);
if word_[1]=word_[length(word_)] then begin
k:=k+1;
writeln(word_);
end;
i:=lp+1;
end;
end;
var s:string; k:integer;
begin
writeln('Введите строку');
Readln (s);
Alg(s,k);
writeln('Результат :',s);
writeln('Количество слов:',k);
end.