Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Оцените дизайн сайта

Супер
Симпатично
Пойдет
Ничего хорошего
Просто клиника


Результаты
Другие опросы

Всего голосов: 890
Комментарии: 2


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Практикум — Глава 7. Алгоритмы обработки символьной информации
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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.
 
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
 
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать