Я создал код, который запрашивает переменную сумму, а затем просит ввести каждую переменную, а затем сохранит ее в векторе. Проблема, с которой я сталкиваюсь, заключается в том, что когда вы вводите что-то неправильное, и оно просит вас попробовать еще раз, оно либо просит вас ввести переменную определенное количество раз в зависимости от введенных вами символов, что действительно странно. Я думал, что использование ssinput.clear();
разрешит это, но это не так.Почему это в то время как петля выдает очень странные вещи?
Например, если я напечатал эти вещи в Терминал:
Please input variable 1: a
ERROR, PLEASE ENTER ONLY VALID SYMBOLS
---------------------
Please input variable 1: 1
Please input variable 1: 3
Please input variable 1: 5
Please input variable 2: 1
Please input variable 3: 4
Please input variable 4: 3
Please input variable 5: 3
В целом он был очень sporatic и странно. Мой код ниже.
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int inputErrorMessage(){
cout << "\n ERROR, PLEASE ENTER ONLY VALID SYMBOLS \n";
cout << "--------------------- \n";
return 0;
}
int main(){
// Declare the variables, vectors, etc.
int varNum = 1;
int totVar = 5;
vector<double> userNums;
double input = 0;
string checkInput = "";
bool valid = false;
stringstream sstotVar;
while(!valid){
valid = true;
// Ask the user for each variable, then record it into the array
for (int i = 0; i < totVar; ++i) {
cout << "Please input variable " << varNum << ": ";
getline(cin, checkInput);
stringstream ssinput(checkInput);
ssinput >> input;
if (ssinput.fail()) {
inputErrorMessage();
valid = false;
}
if (valid == true) {
userNums.push_back(input);
varNum++;
}
ssinput.clear();
}
}
}
Минимальный код .... У вас есть две очень большие петли ... сжимайте ее до той, с которой у вас возникла проблема, и не добавляйте все библиотеки jesus ... –
Хорошо, я сделаю это – PeteMcGreete
Это будет намного проще дать вам хороший ответ. –