我是编程的新手,今天我在这里,因为我需要帮助我正在编写的程序。这个程序是本书的练习:使用C ++编程原理和实践。我必须编写一个程序,它使用一个函数来查找vector
双精度中的min,max,mean和median元素。我试着写这个循环但是我在阅读数字时遇到了一些问题。这是循环:
void reading_loop()
{
cout << "Enter a series of numbers ending with any non-digit character : ";
while (true) try {
vector<double> values;
double x;
while (cin >> x) values.push_back(x);
Stats result = get_stats(values); // a stats holds the results
print_vector(values);
print_stats(result);
cout << "Try again : ";
}
catch (runtime_error& e) {
cerr << "Error : " << e.what() << '\n';
}
catch (...) {
cerr << "Oops, something went wrong somewhere \n";
}
}
名为Stats
的结果的对象是一个简单的结构,作者告诉我用它来保存get_stats(values)
的结果。基本上这个程序的问题是while(cin >> x)
循环,当我执行程序时,我输入第一个数字序列并使用字符停止读取:'; '程序按原样打印校正结果,但随后它会跳过while(cin >> x)
读取,使程序进入无限循环。我在论坛上读过这样的问题,但我是编程新手,所以我不知道cin.ignore()
或cin.clear()
等功能。你会如何解决这个问题?