Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
17.10.2015, 18:47     Определить, есть ли в строке слова, в которых гласных больше чем согласных #1
Подскажите пожалуйста, что не так в коде:
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;
}
Задание: Дано рядок, для которого необходимо определить, есть ли в нем слова, в которых гласных больше чем согласных.
Почему-то не работают корректно счетчики и можете подсказать, как правильно учитывать слова отдельно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 18:47     Определить, есть ли в строке слова, в которых гласных больше чем согласных
Посмотрите здесь:

C++ Вывести слова без повторений,которые имеют больше гласных,чем согласных.
C++ Определить каких букв больше в строке: гласных или согласных и на сколько.
Определить номер слова в котором больше всего гласных букв C++
Определить слова, в которых больше гласных букв, чем согласных C++
C++ Определить, каких букв — гласных или согласных — больше в данном тексте
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FrolBrol
 Аватар для FrolBrol
14 / 14 / 2
Регистрация: 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;
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
17.10.2015, 23:05     Определить, есть ли в строке слова, в которых гласных больше чем согласных #3
Цитата Сообщение от EdHaker Посмотреть сообщение
Дано рядок, для которого необходимо определить, есть ли в нем слова, в которых гласных больше чем согласных.
1. выделить слово
2. выполнить подсчет гласных и согласных.
3. если гл > согл -> вернуть true,иначе п.1.
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
18.10.2015, 16:53  [ТС]     Определить, есть ли в строке слова, в которых гласных больше чем согласных #4
А можете подсказать как конкретно это сделать? Я имею ввиду код.

Добавлено через 15 минут
Всеравно не правильно счетчик считается( Можете подсказать где ошибка в коде?
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
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 << "нет";
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
18.10.2015, 17:32  [ТС]     Определить, есть ли в строке слова, в которых гласных больше чем согласных #6
Спасибо, вроде работает, но почему на слова с равным количеством букв говорит тоже есть?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
18.10.2015, 17:37     Определить, есть ли в строке слова, в которых гласных больше чем согласных #7
Dimension, обратите внимание на
C++
1
for (int i = 0;i <= a.size();i++)
Цитата Сообщение от EdHaker Посмотреть сообщение
но почему на слова с равным количеством букв говорит тоже есть?
ваша версия?
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
18.10.2015, 17:45  [ТС]     Определить, есть ли в строке слова, в которых гласных больше чем согласных #8
А что с ним не так?
S_el
18.10.2015, 17:47
  #9

Не по теме:

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

EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
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 минуты
Подскажите, что не так?
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
18.10.2015, 17:56     Определить, есть ли в строке слова, в которых гласных больше чем согласных #11
обнулите переменные в начале
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
18.10.2015, 17:56     Определить, есть ли в строке слова, в которых гласных больше чем согласных #12
EdHaker, тогда как обычно:
напишите комментарий к каждой строке кода,зачем нужна и что происходит.
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
18.10.2015, 17:59     Определить, есть ли в строке слова, в которых гласных больше чем согласных #13
Цитата Сообщение от EdHaker Посмотреть сообщение
i <= a.size()
строго меньше должно быть
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
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;
Тогда всегда есть.
В чем проблема???
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
18.10.2015, 18:20     Определить, есть ли в строке слова, в которых гласных больше чем согласных #15
попробуйте после ввода ,вывести введенную строку ,русские буквы там или иероглифы ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2015, 18:42     Определить, есть ли в строке слова, в которых гласных больше чем согласных
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 97
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;
}
Yandex
Объявления
18.10.2015, 18:42     Определить, есть ли в строке слова, в которых гласных больше чем согласных
Ответ Создать тему
Опции темы

Текущее время: 23:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru