2011-12-15 7 views
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 
+0

この関数から必要なものを見つけてください:bool getAGrades(int * score)現在のところ、それは意味をなさない1つのインデックス(0)のみを調べます。 –

+0

さらに、cin.ignore()も使用しないでください。私はこれが複雑な入力フィルタリングを実行する必要がない基本的な宿題であると仮定しています。 –

+0

宿題の場合は宿題タグを付けてください。 –

答えて

0

あなたは(あなたがgetAverageで行っているように)すべてのインデックスを見てループを使用する必要があります。これには、配列のサイズがわかっていることが必要です(getAGrades)。

また、returnの後にcoutを置くことは意味がありません。実行されることはありません。

関連する問題