计算字符串中的相同数字并将其打印为星号c ++

时间:2016-11-16 20:38:39

标签: c++

我正在编写一个包含字符串的程序,然后我通过字符串读取并使用向量将所有数字放入数组中,然后使用count我必须在该数组中计算相同的数字,然后打印数字作为明星。

我得到的错误是二进制表达式的无效操作数。

这是代码。

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

int main() {

    vector<string> array;
    string grades = "01211342111153332211111232454444";
    int newarray[31];
    for(int i = 0  ; i < grades.length(); i++){
        array.push_back(grades.substr(i,1));

    }

    int zero = count(std::begin(array),std::end(array),0);
    int one = count(std::begin(array),std::end(array),1);
    int two = count(std::begin(array),std::end(array),2);
    int three = count(std::begin(array),std::end(array),3);
    int four = count(std::begin(array),std::end(array),4);
    int five = count(std::begin(array),std::end(array),5);
   // also used this way int zero = count(array.begin(),array.end(),0); but still getting error.

    for(int i = 0 ; i < one ; i ++){
        cout << '1 - ' << '*' << ' ';
    }
    for(int j = 0 ; j < two ; j++){
        cout << '2 - ' << '*' << ' ';
    }


}

学习C ++所以希望人们对我有点轻松。

1 个答案:

答案 0 :(得分:2)

这里有很多问题。

首先,您要将数字与int zero = count(std::begin(array),std::end(array),0);中的字符串进行比较。您想要将字符串与字符串进行比较。

其次,您正在尝试cout '1 - ''适用于字符,因此您应该使用"

最后,在cout中,您只需要在星星和空间上循环,而不是"1 - "。并使用cout<<"\n";cout<<std::endl;

来清除整个内容以在您的控制台上打印

您可以尝试以下操作:

int main()
{
    vector<string> array;
    string grades = "01211342111153332211111232454444";
    int newarray[31];
    for(int i = 0  ; i < grades.length(); i++){
        array.push_back(grades.substr(i,1));

    }

    int zero = count(std::begin(array),std::end(array),"0");
    int one = count(std::begin(array),std::end(array),"1");
    int two = count(std::begin(array),std::end(array),"2");
    int three = count(std::begin(array),std::end(array),"3");
    int four = count(std::begin(array),std::end(array),"4");
    int five = count(std::begin(array),std::end(array),"5");


    cout << "1 - ";
    for(int i = 0 ; i < one ; i ++){
        cout << '*' << ' ';
    }
    cout << "\n";

    cout << "2 - ";
    for(int i = 0 ; i < two ; i ++){
        cout << '*' << ' ';
    }
    cout << "\n";

    /*....*/
}