Пример 7.1. Определить количество слов в заданном тексте.

Если слова в тексте разделены одним пробелом, то задача сводится к подсчету числа пробелов. Количество слов при этом равно числу пробелов плюс 1. Если же число пробелов между соседними словами произвольное, как обычно и бывает, то алгоритм усложняется. Рассмотрим оба варианта решения этой задачи.

Вариант 1. Слова в тексте разделены одним пробелом.

Тест

Данные Результат
"Кот на крыше" N=3

 

Школьный АЯ 
алг Число слов (арг лит Text, рез цел N) 
  дано | В непустом тексте Text слова 
| разделены одним пробелом 
  надо | N - количество слов 
нач цел
  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.
 
QBasic

CLS
PRINT "Введите текст, отделяя слова пробелами."
PRINT "Если в тексте есть запятые, заключите его в кавычки."
INPUT Text$ : PRINT

Number = 0 : Flag = 0
FOR i = 1 TO LEN(Text$) 'цикл по буквам текста
  Letter$ = MID$(Text$, i, 1) 'текущая буква текста
  IF
(Letter$ <> " ") AND (Flag = 0) THEN Number=Number+1
  IF
(Letter$ = " ") THEN Flag = 0 ELSE Flag = 1
NEXT i

PRINT "О т в е т : количество слов в тексте равно "; Number
END

Другие записи

10.06.2016. Пример 7.2. Определить, является ли заданное слово "перевёртышем" (слово называется "перевёртышем", если совпадает с собой после переворачивания).
Система тестов N теста Данные Результат 1 Slovo = ''казак'' Otvet = ''Перевертыш'' 2 Slovo = ''коза'' Otvet = ''Не перевертыш'' Школьный АЯ алг Перевертыш (арг лит…
10.06.2016. Пример 7.3. B заданном тексте одно заданное слово везде заменить на другое заданное слово такой же длины.
Тест Данные Результат Текст Слово1 Слово2 ''2sinx+siny'' ''sin'' ''cos'' ''2cosx+cosy'' Школьный АЯ алг Замена (арг рез лит Текст, арг лит Слово1, Слово2)   дано…
10.06.2016. Пример 7.4. Заданную последовательность слов переупорядочить в алфавитном порядке (то есть выполнить лексикографическое упорядочение).
Тест Данные Результат Words=(''стул'', ''гора'', ''яма'', ''стол'')   Words=("гора", "стол", "стул",  "яма") Школьный АЯ   (АЯ расширен добавлением типа данных лит таб   и…
10.06.2016. Пример 7.5. Проверить, имеется ли в линейной записи заданной математической формулы баланс открывающих и закрывающих скобок.
Система тестов Номер  теста Проверяемый  случай Данные Результат 1 При просмотре линейной записи слева направо первой встречается закрывающая скобка ''a)b+1('' ''Нет баланса'' 2 Первой…