Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
1

Определить, есть ли в строке слова, в которых гласных больше чем согласных

17.10.2015, 18:47. Показов 1084. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, что не так в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int glas=0, soglas=0;
string a;
getline(cin, a);
for(int i=0;i<=a.size();i++)
{if(a[i]=='а'||'е'||'ё'||'и'||'о'||'у'||'ы'||'э'||'ю'||'я'||'А'||'Е'||'Ё'||'И'||'О'||'У'||'Ы'||'Э'||'Ю'||'Я') glas+=1;
if(a[i]=='б'||'в'||'г'||'д'||'ж'||'з'||'й'||'к'||'л'||'м'||'н'||'п'||'р'||'с'||'т'||'ф'||'х'||'ц'||'ч'||'ш') soglas+=1;
if(a[i]==' ' && glas<=soglas) glas=soglas=0; 
if(i==a.size()&& glas<=soglas) cout<<"Нет"<<endl;
}
if(glas>soglas) cout<<"Да"<<endl;
getch();
return 0;
}
Задание: Дано рядок, для которого необходимо определить, есть ли в нем слова, в которых гласных больше чем согласных.
Почему-то не работают корректно счетчики и можете подсказать, как правильно учитывать слова отдельно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2015, 18:47
Ответы с готовыми решениями:

В строке найти слова, в которых гласных букв больше, чем согласных
В общем, такое задание : Написать программу, которая выводит на экран слова введенной с клавиатуры...

Определить слова, в которых больше гласных букв, чем согласных
В программировании пока не силен. Не могу решить 3 интересных задачки. Нужна помощь. 1) В...

Строки. Найти слова, в которых гласных букв больше, чем согласных
Здравствуйте,нужна помощь вот в такой задачке. дано строку , для которого необходимо определить ,...

Вывести слова, содержащие гласных букв больше, чем согласных
вывести слова, содержащие гласных букв больше, чем согласных

15
15 / 15 / 6
Регистрация: 02.01.2012
Сообщений: 73
17.10.2015, 22:59 2
C++
1
2
3
///условие в таком духе
if(a[i]=='а' ||a[i]=='е') glas+=1;
if(a[i]=='б'|| a[i]=='в') soglas+=1;
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
17.10.2015, 23:05 3
Цитата Сообщение от EdHaker Посмотреть сообщение
Дано рядок, для которого необходимо определить, есть ли в нем слова, в которых гласных больше чем согласных.
1. выделить слово
2. выполнить подсчет гласных и согласных.
3. если гл > согл -> вернуть true,иначе п.1.
0
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 16:53  [ТС] 4
А можете подсказать как конкретно это сделать? Я имею ввиду код.

Добавлено через 15 минут
Всеравно не правильно счетчик считается( Можете подсказать где ошибка в коде?
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
18.10.2015, 17:15 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int c = 0;
    for (int i = 0;i <= a.size();i++)
    {
        if (a[i] == 'а' || 'е' || 'ё' || 'и' || 'о' || 'у' || 'ы' || 'э' || 'ю' || 'я' || 'А' || 'Е' || 'Ё' || 'И' || 'О' || 'У' || 'Ы' || 'Э' || 'Ю' || 'Я') glas += 1;
        if (a[i] == 'б' || 'в' || 'г' || 'д' || 'ж' || 'з' || 'й' || 'к' || 'л' || 'м' || 'н' || 'п' || 'р' || 'с' || 'т' || 'ф' || 'х' || 'ц' || 'ч' || 'ш') soglas += 1;
        if (a[i] == ' '|| i==a.size()-1 ) {
            if (glas > soglas)
                c = 1;
            glas = soglas = 0;
        }
    }
    if (c) {
        cout << "есть";
    }
    else cout << "нет";
1
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 17:32  [ТС] 6
Спасибо, вроде работает, но почему на слова с равным количеством букв говорит тоже есть?
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
18.10.2015, 17:37 7
Dimension, обратите внимание на
C++
1
for (int i = 0;i <= a.size();i++)
Цитата Сообщение от EdHaker Посмотреть сообщение
но почему на слова с равным количеством букв говорит тоже есть?
ваша версия?
0
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 17:45  [ТС] 8
А что с ним не так?
0
S_el
18.10.2015, 17:47
  #9

Не по теме:

Цитата Сообщение от EdHaker Посмотреть сообщение
А что с ним не так?
с кем?

0
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 17:55  [ТС] 10
С for (int i = 0;i <= a.size();i++)? Вообще неправильно работает код, счетчики не считают правильно...

Добавлено через 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
27
#include <iostream.h>
#include <conio.h>
#include <string>
using namespace std;
int main()
{ setlocale(LC_ALL, "Russian");
int glas , soglas;
string a;
getline(cin, a);
int c = 0;
    for (int i = 0;i <= a.size();i++)
    {
        if (a[i] == 'а' || 'е' || 'ё' || 'и' || 'о' || 'у' || 'ы' || 'э' || 'ю' || 'я' || 'А' || 'Е' || 'Ё' || 'И' || 'О' || 'У' || 'Ы' || 'Э' || 'Ю' || 'Я') glas += 1;
        if (a[i] == 'б' || 'в' || 'г' || 'д' || 'ж' || 'з' || 'й' || 'к' || 'л' || 'м' || 'н' || 'п' || 'р' || 'с' || 'т' || 'ф' || 'х' || 'ц' || 'ч' || 'ш') soglas += 1;
        if (a[i] == ' '|| i==a.size()-1 ) {
            if (glas > soglas)
                c = 1;
            glas = soglas = 0;
        }
    }
    if (c) {
        cout << "есть";
    }
    else cout << "нет";
getch();
return 0;
}
- весь код, все время выдает есть(

Добавлено через 2 минуты
Подскажите, что не так?
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
18.10.2015, 17:56 11
обнулите переменные в начале
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
18.10.2015, 17:56 12
EdHaker, тогда как обычно:
напишите комментарий к каждой строке кода,зачем нужна и что происходит.
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
18.10.2015, 17:59 13
Цитата Сообщение от EdHaker Посмотреть сообщение
i <= a.size()
строго меньше должно быть
0
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 18:06  [ТС] 14
А так все правильно?

Добавлено через 1 минуту
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
27
#include <iostream.h>
#include <conio.h>
#include <string>
using namespace std;
int main()
{ setlocale(LC_ALL, "Russian");
int glas=0 , soglas=0;
string a;
getline(cin, a);
int c = 0;
    for (int i = 0;i < a.size();i++)
    {
        if (a[i] == 'а' || 'е' || 'ё' || 'и' || 'о' || 'у' || 'ы' || 'э' || 'ю' || 'я' || 'А' || 'Е' || 'Ё' || 'И' || 'О' || 'У' || 'Ы' || 'Э' || 'Ю' || 'Я') glas += 1;
        if (a[i] == 'б' || 'в' || 'г' || 'д' || 'ж' || 'з' || 'й' || 'к' || 'л' || 'м' || 'н' || 'п' || 'р' || 'с' || 'т' || 'ф' || 'х' || 'ц' || 'ч' || 'ш') soglas += 1;
        if (a[i] == ' '|| i==a.size()-1 ) {
            if (glas > soglas)
                c = 1;
            glas = soglas = 0;
        }
    }
    if (c) {
        cout << "есть";
    }
    else cout << "нет";
getch();
return 0;
}
ЕСЛИ
C++
1
glas=0 , soglas=0;
Тогда всегда нет.
Если
C++
1
glas , soglas;
Тогда всегда есть.
В чем проблема???
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
18.10.2015, 18:20 15
попробуйте после ввода ,вывести введенную строку ,русские буквы там или иероглифы ?
0
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 101
18.10.2015, 18:42  [ТС] 16
А как вывести?( Я еще новичок, извините(

Добавлено через 11 минут
Да выводит иероглифы, как пофиксить?

Добавлено через 8 минут
Все, теперь точно русский, но таки программа не считает, в чем дело?
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
27
28
29
30
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
using namespace std;
int main()
{SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int glas , soglas;
string a;
getline(cin, a);
int c=0;
    for (int i=0;i<=a.size();i++)
    {
        if (a[i] == 'а' || 'е' || 'ё' || 'и' || 'о' || 'у' || 'ы' || 'э' || 'ю' || 'я' || 'А' || 'Е' || 'Ё' || 'И' || 'О' || 'У' || 'Ы' || 'Э' || 'Ю' || 'Я') glas += 1;
        if (a[i] == 'б' || 'в' || 'г' || 'д' || 'ж' || 'з' || 'й' || 'к' || 'л' || 'м' || 'н' || 'п' || 'р' || 'с' || 'т' || 'ф' || 'х' || 'ц' || 'ч' || 'ш') soglas += 1;
        if (a[i] == ' ' || i==a.size()-1 ) {
            if (glas > soglas)
                c = 1;
            glas = soglas = 0;
        }
        
    }
    if (c) {
        cout << "есть";
    }
    else cout << "нет";
getch();
return 0;
}
0
18.10.2015, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2015, 18:42
Помогаю со студенческими работами здесь

Вывести слова без повторений,которые имеют больше гласных,чем согласных.
Пусть у нас есть текстовый файл,на который не накладываются ограничения относительно его размера....

Определить каких букв больше в строке: гласных или согласных и на сколько.
1)Ввести строку А с клавиатуры состоящую из заглавных русских букв. Определить каких букв больше:...

Определить слова, в которых содержится больше двух гласных букв русского алфавита
Добрый день!Нужно определить cлова, в которых содержится больше двух гласных букв русского...

В заданной строке найти слова с чередованием гласных и согласных
Нужен примерный алгоритм нахождения слов с чередованием гласных и согласных. Дана строка состоящая...


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

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