Консультация № 181239
12.12.2010, 05:25
0.00 руб.
0 2 1
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
помогите пожалуйста с программой.
Условие:
Задан исходный текст на русском языке. Длина текста — не более NL строк, длина строки — не более NS символов, длина слова — не более NW символов. Исходный текст должен заканчиваться точкой ('!', '?'). Составить программу, которая определяет, сколько слов содержат 1 слог, 2 слога и т. д. В файле результатов должен быть исходный текст и список слов (разделенных запятыми) с 1 слогом, 2 слогами и т. д.
Не получается никак сделать определения, сколько слов содержат 1 слог, 2слога и т.д.

Обсуждение

давно
Академик
20764
1861
12.12.2010, 11:47
общий
Сосчитайте в слове гласные.
Неизвестный
16.12.2010, 22:20
общий
это ответ
Здравствуйте, Azarov88!
Например, можно сделать так. Пишем функцию, которая проверяет букву на то, что она гласная, и функцию, которая считает число слогов в слове:
Код:
const char vwls [] = {'а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я'}; //гласные буквы

bool IsVowel (char x) //проверка символа х на то, что это гласная буква
{
for (int i=0; i<9; i++)
if (x==vwls[i]) return true;
return false;
}

int Sylls (char* word) //подсчёт числа слогов в слове
{
int l = strlen (word);
int k = 0;
for (int i=0; i<l; i++)
if (IsVowel(word[i])) k++;
return k;
}

Далее можно, например, завести массив из NW/2+1 (по максимально возможному числу слогов в слове) строк, в каждый элемент которого накапливать слова с одинаковым числом слогов через запятую, которые потом, собственно, и вывести. Или можно, в целях экономии памяти, сохранять только позиции нужных слов, а потом скопировать их из исходного текста.
Удачи!
Форма ответа