0 / 0 / 0
Регистрация: 26.03.2017
Сообщений: 15
1

Дан текст. Подсчитать количество гласных (использовать рекурсивную функцию для вычисления)

02.12.2017, 12:57. Показов 843. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан текст. Подсчитать количество гласных (использовать рекурсивную функцию для вычисления).

Помогите пожалуйста найти и исправить ошибку

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string.h>
using namespace std;
char Glasn(char str[20],int n)
{
    if (n==0) return 0;
   else  if (str[n]=='a' or str[n]=='o' or str[n]=='u' or str[n]=='i' or str[n]=='e' or str[n]=='y')
    return Glasn(str,n-1)+1;
       else return Glasn (str,n-1);
}
main()
{
    char s[20];int k=0;
    cout<<"vvedite stroku"<<endl;
    cin>>s;
 for(int i=0;i<strlen(s);i++)
       k++;
       Glasn(s,k);
    cout<<k;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2017, 12:57
Ответы с готовыми решениями:

Дан текст. Подсчитать в нем количество гласных, приходящихся на нечётные позиции
Дан текст. Подсчитать в нем количество гласных, приходящихся на нечётные позиции;

Для вычисления выражения использовать рекурсивную функцию
помогите составить программу: Вычислить величину Y для заданных с клавиатуры значений х и n:...

Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте
Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте.

Использовать рекурсивную функцию вычисления факториала
Дано натуральное число n. Найти (2n)! и 2n!. Использовать рекурсивную функцию вычисления факториала...

5
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
02.12.2017, 13:14 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <stdio.h>
using namespace std;
bool GetLetter(const char cLetter)
{
      char cArSymbols[] = "AEIOUYaeiouy";
    for(int i = 0; cArSymbols[i] != '\0'; i++){
        if(cLetter == cArSymbols[i])
            return true;
    }
    return false;
}
int  main()
{
    cout<< "Enter string. Probel v konche!" << endl;
    char cKey_USER = 0;
    int iSuma = 0;
    do {
        cKey_USER = getchar();
        if(GetLetter(cKey_USER) != 0){
            iSuma++;
        }
    } while (cKey_USER != ' ');
    cout<< iSuma << endl;
    return 0;
}
Так устроит? Правда это без рекурсии - она здесь не нужна.
0
0 / 0 / 0
Регистрация: 26.03.2017
Сообщений: 15
02.12.2017, 13:22  [ТС] 3
Не много не понятно для меня. К сожалению в задании с рекурсией нужно решить.
0
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
02.12.2017, 13:32 4
Цитата Сообщение от Alinct Посмотреть сообщение
Не много не понятно для меня. К сожалению в задании с рекурсией нужно решить.
Не вижу повода для сожаления. Вот вариант с рекурсией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string.h>
using namespace std;
char Glasn(char str[20],int n)
{
if (n==0) return 0;
else if (str[n]=='a' or str[n]=='o' or str[n]=='u' or str[n]=='i' or str[n]=='e' or str[n]=='y')
return Glasn(str,n-1)+1;
else return Glasn (str,n-1);
}
main()
{
char s[20];int k=1;
cout<<"vvedite stroku"<<endl;
cin>>s;
for(int i=0;i<strlen(s);i++){
k++;
}
k = Glasn(s,k);
if(s[0]=='a' or s[0]=='o' or s[0]=='u' or s[0]=='i' or s[0]=='e' or s[0]=='y'){
k++;
}
cout<<k;
}
Добавлено через 2 минуты
И на будущее. надо писать не просто
C++
1
main
, а
C++
1
int main
. Компиляторы начинают первое написание считать устаревшим.
И пиши в конце главной функции всегда
C++
1
return 0;
Добавлено через 3 минуты
И еще. У тебя в проге написано что английские гласные - a, o, u ,i, e, y.
Это не так. Гласные в английском - A, E, I, O, U.
Y - там нет.
1
volvo
02.12.2017, 13:34
  #5

Не по теме:

Цитата Сообщение от Евгений754 Посмотреть сообщение
Y - там нет
Она там есть. Эта буква может быть как гласной, так и согласной. Поэтому не причислять ее к гласным было бы некорректно. Скажем, в слове myth это - единственная гласная.

0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
02.12.2017, 13:52 6
Цитата Сообщение от Евгений754 Посмотреть сообщение
И пиши в конце главной функции всегда
C++
1
return 0;
Это не обязательно

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
 
unsigned int count_vowels(const char *str, int n) {
    if (n < 0) return 0;
    char temp = tolower(str[n]);
    if (temp =='a' or temp =='o' or temp =='u' or temp =='i' or temp =='e' or temp =='y')
        return count_vowels(str, n-1) + 1;
    return count_vowels (str, n-1);
}
int main() {
    char s[100];
    int k = 0;
    std::cout << "Enter string: ";
    std::cin.getline(s, 100);
    std::cout << count_vowels (s, strlen(s));;
}
0
02.12.2017, 13:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2017, 13:52
Помогаю со студенческими работами здесь

Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке....

Задан текст. Подсчитать в нем количество гласных букв
Ребят, такие вот задачи. Помогите! II) Задан текст из 20 символов латинского алфавита....

Дан текст на русском языке.Найти количество гласных букв
Дан текст на русском языке.Найти количество гласных букв

Используя рекурсивную функцию факториала, подсчитать количество сочетаний C(n, m)
Используя рекурсивную функцию факториала, напишите программу подсчёта числа сочетаний C(n,m), если ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru