Застрял при рассмотрении переключателя и цикла while при сложении предложения и символов в нем - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь написать программу, которая вводит предложение и вычисляет количество символов различных типов.Например,

INPUT:

Введите предложение, которое заканчивается на «.»или же '!'или '?': * это Aобразецпредложение!

ВЫХОД:

Общее количество символов: 28Количество гласных: 8Количество новых строк: 3Количество вкладок: 1Количество мест: 2Количество других символов: 14

Пока у меня есть:

#include<stdio.h>
#include<ctype.h>

int main()
{
char c;
int i;
    printf("Enter a sentence (ended by a '.' or '!' or '?'):\n");
    scanf("%c", &c);

while (c !='.' && c !='?' && c !='!')

switch(c)
    {
        case 'a': i++;

        case 'e': i++;

        case 'i': i++;

        case 'o': i++;

        case 'u': i++;
    }
return 0;
   }

Короче говоря, мне нужно написать программу, которая читает предложение, символ за символом, и подсчитывает общее количествосимволы, количество гласных, символы новой строки, табуляции, пробелы и все другие символы.Предложение, которое вводит пользователь, заканчивается точкой, знаком вопроса или восклицательным знаком.Программа не будет считать точку, восклицательный знак или вопросительный знак как символ.Кто-нибудь может мне помочь?// ОБНОВЛЕНИЕ: мне нужно написать это, используя цикл while и переключатель.Я уверен, что все будет каскадно, но это требование.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете сделать это так

#include <stdio.h>

int main()
{
    char c;
    int end = 0;
    int vowels = 0;
    int newlines = 1;
    int tabs = 0;
    int spaces = 0;
    int others = 0;
    int total = 0;

    printf("Enter a sentence (ended by a '.' or '!' or '?'):\n");

    while(!end) {
        scanf("%c", &c);
        switch(c) {
            case '.':
            case '?':
            case '!':
                end = 1;
                break;
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                vowels++;
                break;
            case '\n':
                newlines++;
                break;
            case '\t':
                tabs++;
                break;
            case ' ':
                spaces++;
                break;
            default:
                switch(c) {
                    case 'a' ... 'z':
                    case 'A' ... 'Z':
                        others++;
                        break;
                }
                break;
        }
    }

    total = vowels + newlines + tabs + spaces + others;
    printf("Total number of characters: %d\n", total);
    printf("Number of vowels: %d\n", vowels);
    printf("Number of newlines: %d\n", newlines);
    printf("Number of tabs: %d\n", tabs);
    printf("Number of spaces: %d\n", spaces);
    printf("Number of other characters: %d\n", others);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...