原始输入后,我一直得到零

时间:2019-04-07 23:43:00

标签: c++

所以我用无限制的输入创建了一个向量,但是我想要它,以便当用户想要停止输入数据时,他们只是输入一个非数字键,然后继续前进到下一个向量,它只是第一个但相反并乘以8并加上100,但是当它继续前进时,它只会添加一堆零作为输入

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

int main() {
    int n;
    vector<int> (myVec1)(n);
    vector<int> (myVec2)(n);
    int i;
    int sum;


    for(i=0;i<n;++i){
        cout<<"please enter an integer ";
        cin>>myVec1.at(i);
        cout<<endl;
        if(cin.fail()){
            for(i=0; i<n; i++){
                cout<<myVec1.at(i)<<" ";
            }
        }
    }






    cout<<endl;

    for(i=0; i<n; i++){
        sum=(myVec1.back()*8)+100;
        myVec1.pop_back();
        cout<<sum<<" ";

    }
    return 0;
}

这是结果,如您所见,如果有任何人可以帮助我,那么我尝试停止输入后只会出现一堆零,我真的很感激:)

请输入整数435

请输入整数412

请输入整数43

请输入整数56

请输入整数2

请输入整数q

435 412 43 56 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 116 548 444 3396 3580

1 个答案:

答案 0 :(得分:0)

int n具有未定义的值(未初始化)

相反,请忽略定义n并像这样初始化您的向量:vector<int> myVec1;

,当您读取值时,请使用myVec1.push_back(valueFromKeyboard);

将其附加到向量中
#include <iostream>
#include <vector>
using namespace std;

int main () {
    vector<int> myVec1;
    vector<int> myVec2;

    int valueFromKeyboard;

    cout << "please enter an integer ";
    while (cin >> valueFromKeyboard) {
        if (!cin.fail()) {
            myVec1.push_back(valueFromKeyboard);
        }
        cout << "please enter an integer ";
    }


    for (int i = 0; i < myVec1.size(); i++) {
        cout << myVec1[i] << " ";
    }




    cout << endl << endl;

    for (int i = 1; i < myVec1.size()+1; i++) {
        myVec2.push_back(myVec1.end()[-i]*8+100);
    }

    for (int i = 0; i < myVec2.size(); i++) {
        cout << myVec2[i] << " ";
    }


    return 0;
}

myVec1.end()[-1]是向量的最后一个元素,myVec1.end()[-2]是倒数第二个,依此类推。这就是为什么我创建了此循环for (int i = 1; i < myVec1.size()+1; i++)以便从1到{{ 1}}