【问题标题】:expected unqualified id before return 0返回 0 之前的预期不合格 id
【发布时间】:2020-10-10 14:53:05
【问题描述】:

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

【问题讨论】:

    标签: c++


    【解决方案1】:

    在您处理Q/q 的部分中,声明:

    condition {false};
    

    不是有效的assignment形式,你应该改用:

    condition = false;
    

    大括号可以用于初始化,但这不是你要在那条线上做的。


    顺便说一句,这行:

    if(numbers.size() > 0){
    

    似乎有点奇怪。由于您将列表初始化为空,因此即使您已经要求用户输入,主循环也永远不会启动(因为它位于 if 块内)。

    这是运行时错误而不是语法错误,但您仍需要在某个时候修复它。

    怀疑应该只作为计算平均值的一部分来做,以免被零除。

    【讨论】:

      【解决方案2】:

      这是我为你写的。既然你是一个学习者,我认为你应该练习更好的东西,比如 STL 函数,而不是在顶部使用 using namespace 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;
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多