2016-04-22 18 views
-3

私はプロトタイプを作成し、averageという関数を書こうとしています。C/C++でのプロトタイプ

私は両方のラズロに.....機能にエラーが少なすぎるの引数を取得し、ピエトラ

平均は、生徒のテストの点数の配列を受け取り持っているもの、それを作成する方法を確認していません。

平均は、学生の得点、私は適切にプロトタイプを作成するにはどうすればよい

の平均を計算しますか? (ポインタの最初の要素に)アレイと、アレイ内の項目数:

#include <iostream> 
using namespace std; 

double average(int array[], int items); // 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; 

    // function call to average 

} 
+3

あなたが言いますあなたはそれを作成しようとしました....それで何が起こったのですか?それは失敗しましたか?あなたがそれを正しくやっているかどうかは分かりません。あなたは何を探していますか? –

+2

これはC++です。 C/C++のような言語はありません。 – aschepler

+1

持っている関数宣言が有効です。 'main()'が関数を呼び出す方法は、宣言(2つではなく1つの引数、 'int'に格納された' double'の戻り値)を渡すこと)と一致しません。また、表示したコードで関数を定義していない(実装している) – Peter

答えて

2

次の2つの引数を取るようにaverageを宣言しました。問題は、averageを呼び出すと、1つの引数、つまり配列(最初の要素へのポインタに減衰する)だけを渡すことです。 items引数がありません。

num = average(lazlo, 6); 

あなたはその後、印刷メッセージも正しくない:

あなたの呼び出しは次のようになります。 averageは平均値を返します。numは、配列内の数値の平均であり、項目数ではありません。さらにlazlo[num]num64になり、lazlo配列に64番目のアイテムがないため、エラーになります。

+1

実際、最初のパラメータは配列ではなくポインタです。 –

+0

私は認識しています。私はそれを混乱する話題にすることができるので、言語を習得し始めたばかりの人にそれをもたらすのを避けようとしていました。私はこれらのコメントがそれをもたらした今、答えを編集しました。 –

0

コードが機能するには、実際の関数をプロトタイプに関連付けておく必要があります。あなたの主な機能の下にこれを追加することができます:

double average(int array[], int items) { 
    // write your averaging code here 
} 

あなたは平均的な機能をコーディングが終了したら、それはそのような入力およびデータ型の数がプロトタイプと一致していることを呼び出してください:

num = average(lazlo, 6); 
num = average(pietra, 8); 
+0

"入力とデータ型の数がプロトタイプと一致するように呼び出してください。"明らかに、彼はそれをやる方法を知らない。 – Barmar

+0

ええ、他のコメント/回答はそれに対処しています。 – Ben

+0

答えはそれ自身で完了しようとするべきです。 – Barmar