【发布时间】:2012-01-21 09:58:03
【问题描述】:
我正在尝试编写一个程序,允许用户输入他们选择的数量。我希望以升序显示数字并显示平均值。我完成了这部分,但如果至少有一个数字高于 90,我也想打印一个字符串,如果没有一个数字高于 90,我想打印另一个字符串。我认为我非常接近完成这项工作,但是每当我通过编译器运行它时,它都会说我必须使用的布尔函数不接受 1 个参数。我真的不知道该怎么办。
#include <iostream>
using namespace std;
#include <iomanip>
#include <cstdlib>
int compare(const void* pa, const void* pb)
{
const int& a = *static_cast<const int*>(pa);
const int& b = *static_cast<const int*>(pb);
if (a < b) return -1; // negative if a<b
if (a > b) return 1; // positive if a>b
return 0; // 0 for tie
} // compare
double getAverage(int* score, int n)
{
int sum = 0;
int i = 0;
for (i = 0; i < n; i++)
sum += score[i];
double average = double(sum) / n;
return average;
} // getAverage
//Boolen Function to see if there are A grades present
bool getAGrades(int* score, int n)
{
int i = 0;
for (i = 0; i < n; i++){
if (score[i] >= 90){
return true;
cout << "there is at least one A"<<endl;
}else {
return false;
cout<<" No A Grades "<<endl;
}
}
}
int main()
{
int size;
cout << "How many scores? ";
cin >> size;
cin.ignore(1000, 10);
int* score = new int[size];
int i; // loop counter
for (i = 0; i < size; i++)
{
cout<< "Enter a number: ";
cin >> score[i];
cin.ignore(1000, 10);
} // for
qsort(score, size, sizeof(int), compare);
for (int i = 0; i < size; i++) {
cout << score[i] << ' ';
}
cout <<endl;
cout << "Lowest score = " << score[0] << endl;
cout << "Highest score = " << score[size-1] << endl;
cout << fixed << setprecision(1);
cout << "Average = " << getAverage(score, size) << endl;
//this is where i want it to print if there are a grades or not
getAGrades(score);
return 0;
} // main
【问题讨论】:
-
应该是C++?使用
std::sort和std::vector.. -
能否请您复制逐字编译器错误消息?