0
ユーザのサイズベースの配列を設定していくつかのスコアを入力し、最高値と最低値と平均値を出力します。私はまた、Aグレードがあるかどうか(スコアが90より高い場合)を印刷するためにboolen関数を使用したいと思います。私はgetAScores関数で以下のように試みましたが、機能しません。値が90より大きい場合に何かを印刷するユーザサイズベースの配列関数
#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 i = 0;
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
この関数から必要なものを見つけてください:bool getAGrades(int * score)現在のところ、それは意味をなさない1つのインデックス(0)のみを調べます。 –
さらに、cin.ignore()も使用しないでください。私はこれが複雑な入力フィルタリングを実行する必要がない基本的な宿題であると仮定しています。 –
宿題の場合は宿題タグを付けてください。 –