Пример 7.1.
Определить количество слов в заданном
тексте.
Если слова в тексте разделены одним
пробелом, то задача сводится к подсчету
числа пробелов. Количество слов при этом
равно числу пробелов плюс 1. Если же число
пробелов между соседними словами произвольное,
как обычно и бывает, то алгоритм
усложняется. Рассмотрим оба варианта
решения этой задачи.
Вариант 1. Слова в тексте разделены
одним пробелом.
Тест
Данные |
Результат |
"Кот на крыше" |
N=3 |
Демонстрация
Школьный АЯ
алг Число слов (арг лит Text, рез цел N)
дано | В непустом тексте Text слова
| разделены одним пробелом
надо | N — количество слов
нач цел i
N:=1
нц для i от 1 до длин(Text)
| цикл по буквам текста
если Text[i] = " "
то N:=N+1
все
кц
кон
|
Исполнение алгоритма
i |
Text[i] |
Text[i]='' '' |
N |
1 2 3
4 5 6 7
8 9 10 11
12 |
К о т
_ н а _
к р ы ш
е |
+ - -
- + - -
+ - - -
- |
1 2
3 |
|
Turbo Pascal
Program Probel;
Uses Crt;
Var Text : String; {заданный непустой текст}
i, Number : Integer; {Number — количество слов в тексте}
Letter : Char; {текущая буква }
BEGIN ClrScr;
WriteLn('Введите текст :'); ReadLn(Text);
Number:=1;
For i:=1 to Length(Text) do {цикл по буквам текста}
begin
Letter:=Text[i];
If (Letter = ' ' ) then Number:=Number+1;
end;
WriteLn('О т в е т : количество слов в тексте равно ', Number);
END.
Вариант 2. Слова в тексте разделены
произвольным количеством пробелов.
Тест
Данные |
Результат |
"Кот на крыше" |
N=3 |
Демонстрация
Школьный АЯ
алг Число слов (арг лит Text, рез цел N)
дано | В тексте Text слова могут быть разделены
| произвольным количеством пробелов
надо | N — количество слов в тексте Text
нач цел i, лог Flag
N:=0; Flag:=да
нц для i от 1 до длин(Text) | цикл по буквам текста
если (Text[i]<>" ") и (Flag=да) | это условие выполняется только
то N:=N+1 | для первой буквы каждого слова
все
Flag := (Text[i]=" ") | Flag=да, если очередная буква — пробел,
кц | в противном случае Flag = нет
кон
Исполнение алгоритма
Обозначение проверяемого условия:
(Text[i]<>" ") и (Flag =
да)=>(1)
i |
Text[i] |
(1) |
N |
Flag |
1 2 3 4
5 6 7 8 9
10 11 12 13
14 |
К о т _
н а _ _
_ к р ы
ш е |
+ - - -
+ - - - -
+ - - - - |
0 1
2 3 |
да нет нет
нет нет да нет
нет нет нет да
нет нет нет нет |
Turbo Pascal
Program KolSlov;
Uses Crt;
Var Text : String; {заданный текст}
i, Number : Integer; {Number - количество слов в тексте}
Flag : Boolean;
Letter : Char; {текущая буква }
BEGIN
ClrScr;
WriteLn('Введите текст :');
ReadLn(Text);
Number := 0; Flag := TRUE;
For i := 1 to Length(Text) do {цикл по буквам текста}
begin
Letter := Text[i]; {текущая буква текста }
If (Letter <> ' ') and Flag
then Number := Number+1;
Flag := (Letter=' ') {(Letter=' ') — логическое выражение,}
end; {принимающее значения TRUE или FALSE }
WriteLn;
WriteLn('О т в е т : количество слов в тексте равно ', Number); ReadLn
END.
|