2016-04-23 12 views
0

私はmainから平均の方法を分けましたが、mainの2人の生徒はどちらもメソッドを呼び出しましたが、このようにして平均を計算する方法はありませんか?別の方法で平均を計算するC++

平均は2つのことを行います。生徒の得点の平均を計算し、最後の要素に整数の平均を代入し、負の数を置き換えて、配列内で見つかった実際のテストのスコアの数を返します。配列内のセンチネルは負の数です。ここ

今、私たちは最終的に真の割り当てを知っているというのが私のコード

#include <iostream> 
using namespace std; 

double average(int array[]); // function declaration (prototype) 

int main() 
{ 
    int lazlo[] = {90, 80, 85, 75, 65, -10}; 
    int pietra[] = { 100, 89, 83, 96, 98, 72, 78, -1}; 
    int num; 

    num = average(lazlo); 
    cout << "lazlo took " << num << "tests. Average: " << lazlo[ num ] << endl; 

    num = average(pietra); 
    cout << "pietra took " << num << "test. Average: " << pietra[ num ] << endl; 

} 

double average(int array[]) 
{ 
    // Average code 

} 
+2

あなた 'average'関数は配列でありますどのように多くの項目は考えていません。それは何が欠けているかを理解するのに役立ちますか? – PaulMcKenzie

答えて

0

です。

は「普通は2つのことを行いそれは生徒の得点の平均値を算出し、中に整数の平均を配置最後の要素は負数を置き換えて、配列内で見つかった実際のテストスコアの数を返します。配列内のセンチネルは、負の数 "

double average(int array[]) 
{ 
    int i = 0; 
    int Total = 0; 
    while (array[i] >= 0)  //Keep adding to total and increase i until negative value found. 
     Total += array[i++]; 

    array[i] = Total/i; 
    return i;     //Weird to return a double for this, but if that is the assignment... 
} 
0

あなたが本当にaverage()関数の唯一の引数としてCスタイルの配列を渡したい場合は、その大きさを推測するためのテンプレートを使用する必要があります。これはC++であることから、当然のことながら

#include <numeric> 
#include <iostream> 

using namespace std; 

template <size_t N> 
size_t count(int (&array)[N]) 
{ 
    return N; 
} 

template <size_t N> 
double average(int (&array)[N]) 
{ 
    return std::accumulate(array, array + N, 0.0)/N; 
} 

int main() 
{ 
    int lazlo[] = {90, 80, 85, 75, 65, -10}; 

    double num = average(lazlo); 
    cout << "lazlo took " << count(lazlo) << " tests. Average: " << average(lazlo) << endl; 
} 

は、あなたがスコアを保存するためにstd::vectorstd::arrayを使用したほうが良いかもしれませんが、その場合、あなたはこれを行うことができます:

double average(const std::vector<int>& array) 
{ 
    return std::accumulate(array.begin(), array.end(), 0.0)/array.size(); 
} 
+0

残念ながら、私はプログラム全体ではなく、平均的な方法とプロトタイプを編集できるだけです。@JohnZwinck – HoodCoolege

+0

@HoodCoolege:問題ありません。あなたの既存のプログラムに私の最初のバージョンの 'average'を接続することができます。それはまったく同じ方法と呼ばれています。 –

関連する問題