Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- int main() {
- setlocale(LC_ALL, "rus");
- char ch;
- bool was_sentence = false;
- bool was_vopros = false;
- int povestv_cnt = 0;
- int vopros_cnt = 0;
- int voskl_cnt = 0;
- int vopvoskl_cnt = 0;
- // в силу того, что в задании не дано строгое определение предложения
- // будем считать предложением любую последовательность символов,
- // не содержащую '?', '!', '.'
- printf("Введите ваш текст:\n");
- while ((ch = getchar()) != EOF) {
- switch (ch) {
- case '.':
- if (was_sentence) {
- ++povestv_cnt;
- }
- break;
- case '?':
- if (was_sentence) {
- ++vopros_cnt;
- }
- break;
- case '!':
- if (was_sentence) {
- ++voskl_cnt;
- }
- // если was_vopros == true, то это значит,
- // что выполнилось условие (ch == '?' && was_sentence)
- // значит мы на предыдущем шаге цикла зря увеличили переменную vopros_cnt
- if (was_vopros) {
- --vopros_cnt;
- ++vopvoskl_cnt;
- }
- break;
- }
- // случай "абв??!" считаем как вопросительное предложение
- was_vopros = (ch == '?' && was_sentence);
- was_sentence = (ch != '?' && ch != '!' && ch != '.');
- }
- printf("В этом тексте повествовательных предложений = %d\n", povestv_cnt);
- printf("Вопросительны = %d\n", vopros_cnt);
- printf("Восклицательных = %d\n", voskl_cnt);
- printf("Вопросительно восклицательных = %d\n", vopvoskl_cnt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement