TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz