Inessevanston
@Inessevanston
^__^

Как вывести процент гласных в слове?

В задаче нужно, чтобы программа выбрала слово, где больше всего гласных, а потом вывести их процент в выбранном слове. Как раз с процентами проблема. Хотела сначала посчитать кол-во самих гласных, но тут всегда выходит одно и тоже число, причем несколько раз. Чую, споткнулась на ровном места. Может вообще есть более простой способ?

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include<cstdlib>
 #include <iostream>
#include <conio.h>
#define max 150
using namespace std;

int main() {
    setlocale (LC_ALL, "RUS");
      cout<<"Введите слова: "<<endl;
    char input[256];
    const char* s = input;
    fgets(input, sizeof input / sizeof(char), stdin);


    while (*s && !isalpha(*s))
        s++;
    const char* result = s;
    double resultPart = .0;
    while (*s) {
        //Читаем слово.
        const char* wordStart = s;
        int vowelCount = 0, consonantCount = 0;
        while (*s && isalpha(*s)) {
            if (strchr("aeiouy", *s))
                vowelCount++;
            else
                consonantCount++;
            s++;
        }
        double part = (double)vowelCount / (vowelCount + consonantCount);
        if (part > resultPart) {
            resultPart = part;
            result = wordStart;
        }
        while (*s && !isalpha(*s))
            s++;

int n, c1=0, c2=0, c3=0, c4=0, c5=0, c6=0;
char result[max];

            for(n=0;n!=max;n++)
        {
         if (result[n]=='a')
             c1=c1+1;
         if (result[n]=='e')
             c2=c2+1;
         if (result[n]=='y')
             c3=c3+1;
         if (result[n]=='u')
            c4=c4+1;
         if (result[n]=='i')
             c5=c5+1;
         if (result[n]=='o')
             c6=c6+1;
        };
{


cout<<"Кол-во: "<<endl;
    cout<<("%d,%d,%d,%d,%d,%d",c1,c2,c3,c4,c5,c6)<<endl;

    }

    }
    cout<<"Результат: "<<endl;
    while (*result && isalpha(*result))
        putchar(*result++);
    putchar('\n');
}
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
У вас две переменные result. И там где вы считаете количество букв - переменная result пустая.
Возьмите отладчик, да пройдитесь по программе - и многое станет понятно.
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
более простой способ это использовать стандартные с++ контейнеры и библиотеку алгоритмов. например вот так:
pastebin.com/Hiy2m5AQ
Ответ написан
Комментировать
A1ejandro
@A1ejandro
youtube блогер, ИТ-специалист
Алгоритм простой. Два массива, в одном гласные, в другом согласные. Ищем, согласные_count++, или гласные_count++. Считаем процентные соотношения. Всё.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы