程序无法在学校计算机上编译,但在我的计算机上可以完美编译
Program won't compile on school computers but compiles perfectly on mine
所以我用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函数将总和输出到控制台,然后在下一行返回实际的总和。