c++ - 计算字符串中偶数偶数元音和辅音的程序

标签 c++ string

你好,我不知道如何修复我的程序来查找我的字符串中有多少个偶数、奇数、元音和辅音。

程序编译并运行,但我从来没有得到任何元音或辅音,其他所有内容都以偶数或奇数(偶数字符)添加。

编辑 1:我的意思是,如果用户输入字符串 John123 我想找出有多少个字符是元音,在这种情况下 1 ' o'这种情况下辅音有多少个3'J','h','n'这种情况下有多少是偶数1'2'这种情况下有多少是奇数21”和“3”。

#include <iostream>
#include <string>

using namespace std;

int main ()
{
    string s1;
    int evens = 0; //
    int odds = 0; // 
    int vowels = 0; //
    int consonants  = 0; // 
    cout << "Please type in Something: ";
    getline(cin, s1);
    cout << "You typed: " << s1 << endl;

    for(int i = 0; i < s1.size(); ++i)
    {
        if((s1[i] % 2) == 0 ) 
        {
            ++evens;
        }
        else if((s1[i] % 2 ) != 0) // What would an algorithm (formula) be to find when a number is odd without the not-equals != ?
        {
            ++odds;
        }

        else if(s1[i] == 'A' || 'a' || 'E' || 'e' || 'O' || 'o' || 'I' || 'i' || 'U' || 'u')
        {
            ++vowels;
        }
        else if(s1[i] == 'Q' || 'W' || 'R' || 'T' || 'Y' || 'P' || 'S' || 'D' || 'F' || 'G' || 'H' || 'J' || 'K' || 'L' || 'Z' || 'X' || 'C' || 'V' || 'B' || 'N' || 'M'||
                         'q' || 'w' || 'r' || 't' || 'y' || 'p' || 's' || 'd' || 'f' || 'g' || 'h' || 'j' || 'k' || 'l' || 'z' || 'x' || 'c' || 'v' || 'b' || 'n' || 'm')
 //   I specify every letter so that it dosn't pick whitespaces, symbols etc.
        {
            ++consonants;
        }
    }
    cout << "Evens in string are: " << evens << "\nOdds in string are: " << odds << "\nVowels in string are: " << vowels << "\nConsonants in string are: " << consonants;

    return 0;
}

最佳答案

if((s1[i] % 2) == 0 )

此代码不正确。您正在调整角色,这不是您想要的。你想先使用 atoi 或类似的东西将字符转换为整数,我不记得这个函数了。 (只需将字符串查找为 int c++)。然后,一旦您将字符转换为整数,就可以正确地调制它。

另外,正如 Jongware 所提到的,您的 || 语法是完全错误的。您需要对每个字符进行 == 比较。

应该看起来像这样(很长):

(s1[i] == 'A' || s1[i] == 'a' || s1[i] == 'E' || s1[i] == 'e' || s1[i] == 'O' || s1[i] == 'o' || s1[i] == 'I' || s1[i] == 'i' || s1[i] == 'U' || s1[i] == 'u')

您可能希望预先将 s1[i] 存储在一个字符中,这样更简洁。

并且您应该将字符测试放在奇数/偶数测试之前,这样您就不会不小心尝试将 h 或其他非数字字符转换为整数。

关于c++ - 计算字符串中偶数偶数元音和辅音的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427635/

相关文章:

c++ - 我如何在阅读时 "unzip"gzip 流

JavaScript string.replace 使用 "$$"输出 "$"

c++ - 代码崩溃,没有逻辑错误

android - 使用来自 android 相机硬件实现的硬件编码器

c++ - Ubuntu 机器上出现段错误,但 Mac 上却没有

c++ - 从函数调用返回后,来自 std::vector 引用的数据损坏

c# - 错误运算符 '=='无法应用于 'char'和 'string'类型的操作数

python - 在python中读取文件

java - Java中的字符串isNullOrEmpty?

c++ - 为什么这个关于字符串 toupper 的代码示例没有结果?