我是C++的新手。 我有错误。 但是,我不知道如何修复它。 谁能帮帮我吗? 谢谢。 P-打印数字A-相加数字M-显示数字的平均值S-显示最小数字L-显示最大数字Q-退出
Errors : expected unqualified id before return 0
error : expected ';' before {}
#include <iostream>
#include <vector>
using namespace std;
int main(){
char input {};
vector <double> numbers {};
int number{};
int sum{};
int min_number{};
int max_number{};
bool condition {true};
cout << "Enter a command" << endl;
cin >> input;
if(numbers.size() > 0){
while(condition){
if (input == 'P' || input == 'p'){
for(auto x: numbers)
cout << x << endl;
}
else if(input == 'A' || input == 'a'){
cout << "Enter a number";
cin >> number;
numbers.push_back(number);
}
else if(input == 'M' || input == 'm'){
for(auto x : numbers)
sum += x;
cout << sum / numbers.size() << endl;
}
else if(input =='S' || input == 's'){
for(size_t i {0}; i < numbers.size(); ++i)
if(numbers.at(i) < min_number)
min_number =numbers.at(i);
}
else if(input =='L' || input == 'l'){
for(size_t i {0}; i < numbers.size(); ++i)
if(numbers.at(i) > max_number)
max_number =numbers.at(i);
}
else if(input =='Q' || input == 'q'){
condition {false};
}
}
cout << "[] - list is empty, unable to calculate" << endl;
}
return 0;
}
在处理q/q
的部分中,语句:
condition {false};
不是有效的分配形式,则应改用:
condition = false;
大括号用于初始化是很好的,但这不是您试图在那一行上做的。
顺便说一句:
if(numbers.size() > 0){
好像有点奇怪。 因为您将列表初始化为空,所以即使您已经要求用户输入,主循环也永远不会启动(因为它在if
块内)。
这是一个运行时错误,而不是语法错误,但是您仍然需要在某个时候修复它。
我怀疑,特别应该只作为计算平均数的一部分来做,以免被零除。
我为你写了这个。 由于您是一个学习者,我认为您应该练习更好的东西,比如STL函数,而不是使用使用名称空间std;
。
你可能会发现一些新的东西,但是不要害怕,只要在一些像cppreference这样的网站上搜索它们,看看那个实体做了什么,以及如何有效地使用它。
有许多逻辑错误。 @PaxDiablo已经在回答中提到了他们。 我已经移除了它们中的每一个,这段代码是有效的。
#include <algorithm>
#include <cctype>
#include <iostream>
#include <vector>
int main() {
std::vector<double> numbers;
while (true) {
char input;
std::cout << "Enter a command: ";
std::cin >> input;
switch (std::toupper(input)) {
case 'P':
if (numbers.empty())
std::cerr << "The list is empty!" << std::endl;
else {
for (auto &&i : numbers)
std::cout << i << ' ';
std::cout << std::endl;
}
break;
case 'A': {
int number;
std::cout << "Enter a number: ";
std::cin >> number;
numbers.push_back(number);
break;
}
case 'M':
if (numbers.empty())
std::cerr << "The list is empty! Cannot perform the operation!!";
else {
int sum = 0;
for (auto &&i : numbers)
sum += i;
std::cout << "Mean: " << (sum / numbers.size()) << std::endl;
}
break;
case 'S':
std::cout << "Smallest Number: " << *std::min_element(numbers.begin(), numbers.end()) << std::endl;
break;
case 'L':
std::cout << "Largest Number: " << *std::max_element(numbers.begin(), numbers.end()) << std::endl;
break;
case 'Q':
return 0;
default:
std::cerr << "Unrecognised Command!!" << std::endl;
}
}
return 0;
}