Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3.  
  4. int main() {
  5.     setlocale(LC_ALL, "rus");
  6.  
  7.     char ch;
  8.     bool was_sentence = false;
  9.     bool was_vopros = false;
  10.     int povestv_cnt = 0;
  11.     int vopros_cnt = 0;
  12.     int voskl_cnt = 0;
  13.     int vopvoskl_cnt = 0;
  14.  
  15.     // в силу того, что в задании не дано строгое определение предложения
  16.     // будем считать предложением любую последовательность символов,
  17.     // не содержащую '?', '!', '.'
  18.  
  19.     printf("Введите ваш текст:\n");
  20.     while ((ch = getchar()) != EOF) {
  21.         switch (ch) {
  22.         case '.':
  23.             if (was_sentence) {
  24.                 ++povestv_cnt;
  25.             }
  26.             break;
  27.         case '?':
  28.             if (was_sentence) {
  29.                 ++vopros_cnt;
  30.             }
  31.             break;
  32.         case '!':
  33.             if (was_sentence) {
  34.                 ++voskl_cnt;
  35.             }
  36.             // если was_vopros == true, то это значит,
  37.             // что выполнилось условие (ch == '?' && was_sentence)
  38.             // значит мы на предыдущем шаге цикла зря увеличили переменную vopros_cnt
  39.             if (was_vopros) {
  40.                 --vopros_cnt;
  41.                 ++vopvoskl_cnt;
  42.             }
  43.             break;
  44.         }
  45.         // случай "абв??!" считаем как вопросительное предложение
  46.         was_vopros = (ch == '?' && was_sentence);
  47.         was_sentence = (ch != '?' && ch != '!' && ch != '.');
  48.     }
  49.     printf("В этом тексте повествовательных предложений = %d\n", povestv_cnt);
  50.     printf("Вопросительны = %d\n", vopros_cnt);
  51.     printf("Восклицательных = %d\n", voskl_cnt);
  52.     printf("Вопросительно восклицательных = %d\n", vopvoskl_cnt);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement