при выводе количества гласных(count) выводится на 1 значение больше ,почему?

int main()
{
    setlocale(LC_ALL, "Rus");
    string nom1="EE aa JO";
    string nom2 = "AEIJOUYaeiouyj";
    int count =0;
    nom1.erase(remove(nom1.begin(), nom1.end(), ' '), nom1.end());
    for (int i = 0; i <= nom2.length(); i++)
    {
        for (int j = 0; j <= nom1.length(); j++)
        {
            if (tolower(nom1[j]) == nom2[i])
            {
                count++;
            }
        }
    }
    cout << nom1 << endl;
    cout << count << endl;
    return 0;
}

Ответы (1 шт):

Автор решения: Vladyslav

Проблема в вашем коде связана с тем, что в циклах Вы выходите за границы длины строк nom1 и nom2. Индексация в строках начинается с 0, поэтому в цикле for (int i = 0; i <= nom2.length(); i++) вы должны использовать условие < вместо <=, чтобы остановиться на последнем допустимом индексе.

То же самое относится и к циклу для nom1.

→ Ссылка