所以我用无限制的输入创建了一个向量,但是我想要它,以便当用户想要停止输入数据时,他们只是输入一个非数字键,然后继续前进到下一个向量,它只是第一个但相反并乘以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
答案 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}}