提问者:小点点

返回%0之前需要不合格的id


我是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;
}

共2个答案

匿名用户

在处理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;
}