因此,我创建了一个具有无限输入的向量,但我希望这样当用户想要停止输入数据时,他们只需输入一个非数字键,然后移动到下一个向量,该向量只是第一个1,但反转并与其相加的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 100 100 100 444 3396 3580 548 444 3396 3580
发布于 2019-04-08 07:46:47
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
转到myVec1.size()+1
https://stackoverflow.com/questions/55564622
复制相似问题