带有char,int和vector C ++的条件句

时间:2017-11-11 20:53:19

标签: c++

所以,我一直在研究一个简单的程序,当给出一个只由r和b组成的字母数组时,它将遍历该数组并计算每个字母的数量。

但是,程序运行正常,但输出0,0。

请帮助!

这是我的代码:

#include <iostream>
#include <vector>
using namespace std;


int main() {



int red = 0;
int blue = 0;


vector <int> necklace;
int beads;

while (cin >> beads){
    necklace.push_back(beads);
}

for(beads = 0; beads < necklace.size(); beads++){
    if( beads == 'r' ){
       red++;
    }
    else if( beads == 'b'){
        blue++;
    }

}

cout << red  << endl << blue << endl ;

}

2 个答案:

答案 0 :(得分:0)

在你的程序中,bead是一个整数。 您正在为项链向量添加整数。所以它不会进入你的if条件,因为珠子应该是&#39; r&#39;或者&#39; b&#39;但这是一些数字。

答案 1 :(得分:0)

你必须改变一下你的程序。首先将int更改为char,同时更改从输入中获取符号/字符的方式(循环)。第二,你必须修复检查向量中是否有'r'或'b'。你必须使用表运算符'[]'。 这是您的程序的固定版本:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    int red = 0, blue = 0;

    vector <char> necklace;
    char beads;
    string line;

    getline(cin, line);
    istringstream iss(line);

    while (iss >> beads)
    {
        necklace.push_back(beads);
    }

    for(int i = 0; i < necklace.size(); i++)
    {
        beads = necklace[i];
        if (beads == 'r' )
        {
            red++;
        }
        else if(beads == 'b')
        {
            blue++;
        }
    }

    cout << red  << endl << blue << endl ;
}