double arrow

Работа с фразами

Фразой называется набор слов, разделенных одним или несколькими пробелами.

В большинстве случаев, если в программе нужно сделать какой- либо анализ введенной фразы, то ее необходимо предварительно разбить на слова.

АЛГОРИТМ РАЗБИВКИ ФРАЗЫ НА СЛОВА

Пусть S - введенная фраза, тогда для хранения отдельных слов фразы заведем массив B.

var s:sring; b:array[1..40] of string;{считаем, что больше 40 слов в фразе не будет}

i,j:integer;

label 1,2;

begin

readln(s);

j:=1; {текущий номер слова в фразе}

1: i:=pos(' ',s); { есть ли в фразе пробелы?}

if i=0 then {пробелов нет,т.е. в фразе только одно слово}

begin b[j]:=s;goto 2; end;

if i=1 then {фраза начинается с пробела,его нужно удалить}

begin delete(s,1,1);goto 1;end;

if i<>1 then {пробел в фразе есть,но не на первом месте,выделяем слово с начала фразы и

удаляем его из фразы}

begin b[j]:=copy(s,1,i-1);

delete(s,1,i-1);j:=j+1;goto 1; end;

2:......

ЗАДАЧА. Составить программу, которая в введенной фразе удаляет самое короткое слово. Программа работу заканчивает, если фраза состоит из одного слова.

program prim;

var s:string; b:array[1..40] of string;

l:array[1..40] of integer;

i,min,j,k:integer;

label 1,2;

begin

readln(s);

{ разбивка фразы на слова }

j:=1;

1:i:=pos(' ',s);

if i=0 then begin b[j]:=s;goto 2;end;

if i=1 then begin delete(s,1,1);goto 1;end;

if i<>1 then begin b[j]:=copy(s,1,i-1);delete(s,1,i-1);

j:=j+1;goto 1;end;

2:if j>1 then {если в фразе больше одного слова}

begin

{определение длины каждого слова}

for i:=1 to j do l[i]:=length(b[i]);

{определение минимального элемента массива "l" и его индекса}

min:=l[1];k:=1;

for i:=2 to j do

if l[i]<min then begin min:=l[i];k:=i;end;

{ удалить слово из фразы - равносильно выводу ее на экран без этого слова}

for i:=1 to k-1 do write(b[i],' ');

for i:=k+1 to j do write(b[i],' ');

writeln;

end;

end.

ЗАДАЧА. Составить программу, которая слова введенной фразы преобразует следующим образом: в каждом слове после каждых двух букв вставляется символ "-".

program prim;

var s:string; b:array[1..40] of string;

i,j,k:integer;

label 1,2;

begin

readln(s);

{ разбивка фразы на слова }

j:=1;

1:i:=pos(' ',s);

if i=0 then begin b[j]:=s;goto 2;end;

if i=1 then begin delete(s,1,1);goto 1;end;

if i<>1 then begin b[j]:=copy(s,1,i-1);delete(s,1,i-1);

j:=j+1;goto 1;end;

2:for i:=1 to j do begin

s:=b[i]; {запоминаем слово в переменной S}

k:=1; {текущий номер буквы в слове }

repeat

write(s[k]); {выводим "к"-ю букву слова}

k:=k+1;

if k<=length(s) then {если в слове есть буква с номером "к"}

write(s[k]); { то выводим ее }

if k<>l then {если буква с номером "к" не последняя}

write('-'); {то выводим после нее "-"}

k:=k+1;

until k<>l;

write(' '); {вывод пробела между словами}

end;

end.

Примечание. Не во всех задачах с фразами нужно разбивать фразу на слова, например, задача: "подсчитать количество букв "о" в введенной фразе" не требует разбивки фразы на слова:

program prim;

var s:string;k,i,l:integer;

begin

readln(s);

l:=length(s);

k:=0;

for i:=1 to l do

if s[i]='o' then k:=k+1;

writeln('в фразе ',s,' букв "о" =',k);

end.

ЗАДАЧИ

1. Заменить в заданном слове все буквы "о" пробелами.

2. Выяснить, какая из букв: первая или последняя, встречается в заданном слове чаще.

3. Сколько букв "у" в слове стоит на четных местах?

4. Проверить, является ли данное слово "перевертышем".

5. Вычеркнуть из заданного слова все буквы, совпадающие с его последней буквой.

6. Список А содержит фамилии 20 учеников класса. Список В - их возраст. Вывести на экран фамилии

тех, кому больше 16 лет.

7. Задан список 20 областных центров России. Вывести на экран название города с максимальным коли-

чеством букв.

8. Даны два слова А и В. Можно ли из букв, входящих в слово А составить слово В?

9. Составить программу, которая введенное слово, если его длина меньше 10 символов, располагает по

центру поля, состоящего из 10 символов "-".

10. Составить программу, которая в введенном слове меняет местами первую и последнюю буквы.

11. Вывести на экран первую половину введенного слова.

12. Удалить из слова первую и последнюю буквы.

13. Вставить в слово после первых двух букв знак "-".

14. Заменить в слове каждую четную букву на "*".

15. Вывести введенное слово "наоборот".

16. В введенном слове после каждой буквы вставить знак "-".

17. В слове заменить знаком "-" все буквы, кроме первой и последней.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: