2016-09-16 4 views
0

私はプログラミングにはとても新しいので、私はC++を学んでいます。私は理解してより多くの練習を得るために、複数の機能を使って、ある方法を試してみたいと思ったプログラムに出くわしました。識別子がどのように見つからないのですか?誰かが説明できますか?

プログラムは、5つの数値の平均を取ると仮定すると、それは割り当てです。私は簡単な方法があると知っていますが、関数と変数を渡すことで練習したいと思います。 教授はまた、余分なクレジットのためにこの方法をとってお勧めしました。

ここは私が持っているものです。

#include<iostream> 
#include<string> 

using namespace std; 

float num1, num2, num3, num4, num5; 

float main() { 

    cout << "Basic Average Calculator" << endl; 
    cout << "Plaese Input your list of 5 numbers Please place a space after EACH number: " << endl; 
    cin >> num1 >> num2 >> num3 >> num4 >> num5; 
    cout << "Your Average is: " << average(num1, num2, num3, num4, num5); 
    return 0; 
} 

float average(float a, float b, float c, float d, float e) { 
    a = num1, num2 = b, num3 = c, num4 = d, num5 = e; 

    float total = (a + b + c + d + e)/5; 

    return total; 
} 

このコードは動作しません、と私はそれを入力したとき、私は、Visualスタジオの上の構文エラーを得なかったということで、私はロジックが正しいと感じる理由を私は知らないのですか?

average()関数で「識別子が見つかりません」というエラーが発生しますか?

経験豊かな人が私を助けてくれますか?

+1

をあなたのコンパイラは、識別子が見つからされていない* *を示しています。それを修正するだけです。また 'main()'は 'float'ではなく' int'を返すべきです。 – Barry

+0

これはaverage()関数でしたが、正しく識別する方法はありませんでしたか? –

+2

識別子を使用する前に宣言する必要があります。 –

答えて

2

シングルパスコンパイル:識別子は、が使用される前にと宣言されている必要があります。

void f() { g(); } 
void g() {} 

は無効です。 main前へaverageを移動したり、main

float average(float a, float b, float c, float d, float e); 

どこかを追加し、あなたの場合は

void g(); // note the ; 

void f() { g(); } // legal 
void g() {} 

:あなたは前方宣言でこれを修正することができます。

---編集---

このコード行は、魚になります

これは

a = num1, num2 = b, num3 = c, num4 = d, e = num5; 

ことになっていると仮定すると、

a = num1, num2 = b, num3 = c, num4 = d, num5 = e; 
              ^^^^^^^^ 

、その後に理由はないようですこの関数は最初に引数を取るようにしてください。

あなたがあるためにあなたのコードを変更することができます:

float average() 
{ 
    return (num1 + num2 + num3 + num4 + num5)/5; 
} 

int main() 
{ 
    ... 
    cout << "Your Average is: " << average(); 
    ... 
} 

または

float average(float a, float b, float c, float d, float e) 
{ 
    return (a + b + c + d + e)/5; 
} 

int main() 
{ 
    ... 
    cout << "Your Average is: " << average(num1, num2, num3, num4, num5); 
    ... 
} 
+0

うわー!!どうもありがとうございました!それは働きました、明確化のためにあなたに感謝します。私はmain()の後に関数が来る他のプログラムを書いていますが、それでも機能しますか?これは特殊なケースですか? –

+0

@VictorMartins多分C89プログラムであり、かつ/または気付かれなかった未定義の動作を引き起こした可能性があります。 –

+0

@VictorMartins特別な場合ではなく、おそらく非標準オプションでコンパイルしていました。また、コードのいくつかの追加ノートで私の編集を参照してください。 – kfsone

関連する問題