ниже мой C++ код:
void test(int array[], int length) {
int index; // the index of heap array that human want to modify
int num; // the number of heap in the index position
cout << "input the index and num" << endl << flush;
string si,sj;
try{
cin >> si >> sj;
index = stoi(sj);
num = stoi(si);
}catch(std::exception e){
cout << "error, try again" << endl;
test(array, length);
}
if (index <= length && index > 0 && num > 0 && num <= array[index - 1]) {
array[index - 1] -= num;
// print(array, length);
} else {
cout << "error, try again" << endl;
test(array, length);
}
}
И теперь есть оболочка для запуска этого кода, но в оболочке есть вход, как показано ниже:
введите индекс и номер 2 1
это правильный
введите индекс и номер 2
у него просто 1 значение, и программа заблокирована здесь, чтобы ждать другого ввода, я должен понять это и вывести "ошибку, попробуйте еще раз",
введите индекс и число 1 2 3
это также неверно, потому что имеется более 2 входных значений. то же самое, я должен понять, что выход и выход "ошибка, попробуйте еще раз"
Как с этим бороться?
cin.getline
вы должны использовать cin.getline
для ввода.
Затем разделите строку на подстроки и подсчитайте их.