C ++:函数在输出前自动使用50演绎/增加输入数字

时间:2018-09-16 00:27:25

标签: c++ c++11

我试图制作一个程序来获取用户的整数输入,然后将该int中的每个数字过滤为偶数和奇数。完成代码后没有任何错误,但是程序没有按预期正确运行。

我的代码:

int main() {
    int input = NULL;
    int EvenNumbering = 0;
    int OddNumbering = 0;

    cout << "Please input a number: ";
    cin >> input;

    string str = to_string(input); //Convert it to string
    std::vector<int> EvenNo(str.length());
    std::vector<int> OddNo(str.length());

    //Now filter Even number and Odd number
    for (char x : str) {
    //for (int x = 0; x < str.length();x++ ) {
        //int z = (int)str.at(x);
        int z = (int)x;
        if (z % 2 == 0) {
            EvenNo[EvenNumbering] = z;
            EvenNumbering++;
        }
        else {
            OddNo[OddNumbering] = z;
            OddNumbering++;
        }
    }
    cout << endl;
    cout << "Even Numbers: ";

    for (int x : EvenNo) {
        cout << x << ", ";
    }

    cout << endl;
    cout << "Odd Numbers: ";

    for (int x : OddNo) {
        cout << x << ", ";
    }

    cout << endl;
    system("pause");
    return 0;
}

如果我输入1,则输出为Odd numbers: 49 这意味着我要减去50并输入才能显示出来。

2 个答案:

答案 0 :(得分:1)

问题解决了,这要感谢Sam Varshavchik的评论。

解决方案: 将display: grid更改为fieldset

答案 1 :(得分:0)

您可以从unsigned char切换到使用int,以提供更优雅的解决方案。 push_back也是将元素添加到长度未知的向量的常用方法。否则,您或多或少都有。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int input = 0;

    cout << "Please input a number: ";
    cin >> input;

    string str = to_string(input); //Convert it to string
    std::vector<unsigned char> EvenNo;
    std::vector<unsigned char> OddNo;

    //Now filter Even number and Odd number
    for (unsigned char x : str) {
        if (x % 2 == 0) {
            EvenNo.push_back(x);
        }
        else {
            OddNo.push_back(x);
        }
    }
    cout << endl;
    cout << "Even Numbers: ";

    for (unsigned char x : EvenNo) {
        cout << (unsigned char)x << ", ";
    }

    cout << endl;
    cout << "Odd Numbers: ";

    for (unsigned char x : OddNo) {
        cout << x << ", ";
    }

    cout << endl;
    system("pause");
    return 0;
}