程序不会在学校计算机上编译,但在我的计算机上完全编译

时间:2015-10-16 01:08:39

标签: c++ function terminal clion

所以我使用CLion为我的计算机科学课程编写代码。我在我们的机器上遇到了一个错误,这个错误在我的个人机器,终端或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;
    } 

我假设问题出在相应行中每个函数的返回值中。我只是想不出办法解决它。对于这篇长篇文章感到抱歉,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

你的问题就在这里(虽然这只是一个实例):

cout

这是试图返回ostream“语句”的结果,这确实会给你一个cout << "The sum of your numbers is: " << sum << endl; return sum; ,如错误所示。

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

void min_max(double selection)

但是,由于您实际上从未使用返回值,因此您也可以使函数无效,例如:

return

然后在这些函数中单独使用cout << ...(当然在dispatch_sync(dispatch_get_main_queue()) { //do UI updates here self.recievedScore() } 之后)。

答案 1 :(得分:0)

你正在返回“cout&lt;&lt; // stuff”的字符。该函数期望您只返回double(sum变量)。

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

如果你想能够得到答案并传递它,最好的解决方法是让sum方法调用cout函数将总和输出到控制台,然后在下一行返回实际总和。