程序无法在学校计算机上编译,但在我的计算机上可以完美编译

Program won't compile on school computers but compiles perfectly on mine

本文关键字:计算机 编译 我的 完美 程序 学校      更新时间:2023-10-16

所以我用CLion为我的计算机科学课程编码。我在课堂上的机器上遇到了一个错误,而我的个人电脑,Terminal或CLion上却没有。

ary0012@cse06:~/ProblemSet3$ g++ homework3.cpp
homework3.cpp: In function ‘double sum_mean(double)’:
homework3.cpp:111:65: error: cannot convert ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘double’ in return
homework3.cpp:130:67: error: cannot convert ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘double’ in return
homework3.cpp: In function ‘double min_max(double)’:
homework3.cpp:159:65: error: cannot convert ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘double’ in return
homework3.cpp:179:65: error: cannot convert ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘double’ in return
ary0012@cse06:~/ProblemSet3$

代码本身是这样的:

    /*
 ============================================================================
 Name        : Homework3.cpp
 Author      : Axel Yates (email address)
 Version     : 1.0
 Copyright   : 2015
 Description : 
 ============================================================================
 */
#include <iostream>
using namespace std;
void display_credentials();
//

void display_menu();
//

double sum_mean(double);
//

double min_max(double);
//

double selection;
//

int main()
{
    do {
        display_credentials();
        display_menu();
        cout << "Enter your selection: ";
        cin  >> selection;
        if (selection == 1) {
            sum_mean(selection);
        }
        else if (selection == 2) {
            sum_mean(selection);
        }
        else if (selection == 3) {
            min_max(selection);
        }
        else if (selection == 4) {
            min_max(selection);
        }
        else if (selection == 5)
            cout << "Thanks! Have a great day!" << endl;
        else if (selection > 5 || selection < 1)
            cout << "That's not a valid number, try again." << endl;
        }while(selection != 5);
    return EXIT_SUCCESS;
}
void display_credentials()
{
    cout << "+----------------------------------------------+" << endl;
    cout << "|       Computer Science and Engineering       |" << endl;
    cout << "|        CSCE 1030 - Computer Science I        |" << endl;
    cout << "|   Axel Yates  studID   email address here   |" << endl;
    cout << "+----------------------------------------------+" << endl;
    return;
}
void display_menu()
{
    cout << "***************** M E N U *****************" << endl;
    cout << "| 1. Sum  of numbers                      |" << endl;
    cout << "| 2. Mean of numbers                      |" << endl;
    cout << "| 3. Min  of numbers                      |" << endl;
    cout << "| 4. Max  of numbers                      |" << endl;
    cout << "| 5. Exit                                 |" << endl;
cout << "*******************************************" << endl;

return;
}
double sum_mean(double selection)
{
    if (selection == 1)
    {
        int quantity, counter = 0, num = 1;
        double num1 = 0, sum = 0;
        cout << "Enter the positive quantity of numbers to read in(SUM): ";
        cin >> quantity;
        while (counter < quantity)
        {
            counter++;
            cout << "Enter Number " << num++ << ": ";
            cin >> num1;
            sum = sum + num1;
        }
        return cout << "The sum of your numbers is: " << sum << endl;
    }
    else if (selection == 2)
    {
            double num1 = 0, temp = 0, sum = 0, mean = 0;
            int counter = 0, quantity, num = 1;
            cout << "Enter the positive quantity of numbers to read in(MEAN): ";
            cin >> quantity;
            while (counter < quantity)
            {
                counter++;
                cout << "Enter Number " << num++ << ": ";
                cin >> num1;
                sum = num1 + sum;
                mean = (sum)/2;
            }
        return cout << "The mean of your numbers is: " << mean << endl;
    }
    return 0;
}
double min_max(double selection)
{
    if (selection == 3)
    {
    int quantity;
    int counter = 0;
    int num = 1;
    double num1 = 0;
    double sum;
    double min;
        cout << "Enter the positive quantity of numbers to read in(MIN): ";
        cin >> quantity;
        do
        {
                cout << "Enter Number " << num++ << ": ";
                cin >> num1;
                if (num1 < min)
                {
                    min = num1;
                }
                counter++;
        }while (counter != quantity);
        return cout << "The min of your numbers is: " << min << endl;
    }
    else if (selection == 4)
    {
        double num1 = 0, temp = 0, max = 0;
        int counter = 0, quantity, num = 1;
        cout << "Enter the positive quantity of numbers to read in(MAX): ";
            cin >> quantity;
            while (counter < quantity)
            {
                cout << "Enter Number " << num++ << ": ";
                cin >> num1;
                if (num1 >= max)
                {
                    max = num1;
                }
                    counter++;
            }
            return cout << "The max of your numbers is: " << max << endl;
        }
        return 0;
    } 

我假设问题在于相应行中每个函数的返回。我只是想不出解决的办法。很抱歉写了这么长一篇文章,任何帮助都将是非常感激的。

您的问题在于这里(尽管这只是一个实例):

return cout << "The sum of your numbers is: " << sum << endl;

这是试图返回cout"语句"的结果,它确实会像错误指示的那样给您一个ostream

您可能只想输出该文本然后返回值,如:

cout << "The sum of your numbers is: " << sum << endl;
return sum;

但是,由于您实际上从未使用返回值,因此您不妨将函数设置为空,例如:

void min_max(double selection)

则在这些函数中单独使用return(当然是在cout << ...之后)

你返回了一串字符"cout <<//东西"。该函数期望您简单地返回double (sum变量)。

此外,它看起来甚至没有使用返回值。在这种情况下,将函数设为空并完全删除返回语句可能会更好。

如果您希望能够获取答案并传递它,那么修复它的最佳方法是让sum方法调用cout函数将总和输出到控制台,然后在下一行返回实际的总和。