2011-11-21 15 views
0

エラー:その埋め込まときは、画像を大きく作るカント以来非常に奇妙なエラーファイルにコンパイルしようとしたときに

Error when trying to compile

リンク:http://i.imgur.com/IWJyT.png

私は問題が何であるか見当がつかない。私はスクリーンショットを投稿したので、前に使用されたフォーマットを見たことがありません。

エラーが発生したため、コードが完全に含まれています。私は質問に追加する何も持っていないが、システムは私が思う。他に何が追加できますか?

#include <iostream>  //Basic input/output 
#include <iomanip>  //Manipulators 
#include <string>  //String stuff 
#include <fstream> 

using namespace std; 

void instruct();  //Function declaration for printing instructionstring studname(); 
void input (ifstream &infile, float& test1, float& test2, float& test3, float& test4, float& test5, float& test6, float& test7, float& test8, float& test9, float& test10, string& studentname);  //Function declaration for input 
float aver (float test1, float test2, float test3, float test4, float test5, float test6, float test7, float test8, float test9, float test10);  //Function declaration for calculating average 
void output (string studentname, float average);  //Function declaration for output 



int main() 
{ 
    float test1 = 0;    //Vars (test1 - test10) for test scores 
    float test2 = 0; 
    float test3 = 0; 
    float test4 = 0; 
    float test5 = 0; 
    float test6 = 0; 
    float test7 = 0; 
    float test8 = 0; 
    float test9 = 0; 
    float test10 = 0; 
    string studentname = "a";  //Define Var for storing students name 
    float average = 0;   //Define var for storing average 


    instruct();  //Function call to print instructions 


    ifstream infile("grades.dat"); 

    input (infile, test1, test2, test3, test4, test5, test6, test7, test8, test9, test10, studentname);  //Function call for scores 

    while (!infile.eof()) 
    { 
     average = aver (test1, test2, test3, test4, test5, test6, test7, test8, test9, test10); //Function call for average 

     output (studentname, average);  //Function call for output 

     cin.ignore(1); 

     input (infile, test1, test2, test3, test4, test5, test6, test7, test8, test9, test10, studentname); //Get new input 
    }  //end eof 

    return 0; 
} 

/***************************************************/ 
/* Name: instruct         */ 
/* Description: Print instructions to user.  */ 
/* Paramerters: N/A        */ 
/* Return Value: N/A        */ 
/***************************************************/ 

void instruct() 
{ 
    cout << "\n" << "This program will calculate the average of 10 test scores that you input. " << "\n" << "\n"; 
    //Prints instructions 

    return; 
} 

/***************************************************/ 
/* Name: input          */ 
/* Description: Get input       */ 
/* Paramerters: N/A        */ 
/* Return Value: N/A        */ 
/***************************************************/ 

void input (float& test1, float& test2, float& test3, float& test4, float& test5, float& test6, float& test7, float& test8, float& test9, float& test10, string& studentname, ifstream& infile) 

{ 
    infile >> studentname; 
    infile >> test1 >> test2 >> test3 >> test4 >> test5 >> test6 >> test7 >> test8 >> test9 >> test10; 
    infile.ignore(10, '\n'); 

    return; 
} 



/***************************************************/ 
/* Name: aver          */ 
/* Description: Calculate Average     */ 
/* Paramerters: N/A        */ 
/* Return Value: aver        */ 
/***************************************************/ 


float aver (float test1, float test2, float test3, float test4, float test5, float test6, float test7, float test8, float test9, float test10) 

{ 
    float aver = 0; 
    aver = test1 + test2 + test3 + test4 + test5 + test6 + test7 + test8 + test9 + test10; 
    aver = aver/10; 
    return aver; 
} 


/***************************************************/ 
/* Name: output         */ 
/* Description: Calculate Average     */ 
/* Paramerters: N/A        */ 
/* Return Value: aver        */ 
/***************************************************/ 

void output (string studentname, float average)  //Function declaration for output 
{ 

    cout << studentname; 

    cout << average; 

    return; 
} 

から読み込まれるファイル:

 
Number One 
99 99 99 99 99 99 99 99 99 99 
John Doe 
90 99 98 89 87 90.2 87 99 89.3 91 
Clark Bar 
67 77 65 65.5 66 72 78 62 61 66 
Scooby Doo 
78 80 77 78 73 74 75 75 76.2 69 
Santa Clause 
89 92.5 94 95 91 89 88 90 92 91 
Jessie James 
45 54 55 56 66 61 65.6 67 43 54 
Clara Barton 
87 88 76 75.7 80 88 83 84 85 81.2 
Alex Mack 
55 65 66.5 67 76 77.7 66 67.8 71 70 
Ann Apolis 
87 88 88 88 88 85.4 81 82 89 81 
Stewart Mouse 
90 92 93 94 95 96 97 97.7 98 99 
Sue Sloan 
88.5 67.7 88.8 99.9 90.9 89 87 78 89 88 
Luke Skywalker 
76.7 77.8 88.8 76.7 77 88 87 86 85 80.9 
Harry Potter 
80 83 84 85 86 79.4 78.5 81 80 82 
Mary Poppins 
100 100 100 100 100 100 100 100 100 100 
Last One 
33 44 55 66 77 88 99 22 11 91 
+1

スクリーンショットの代わりにエラーコードをコピーして貼り付けてください。 – CharlesB

+0

関数の宣言が大好きです。誤った皮肉なことに、私は関数に多くのパラメータを渡すことはありません。それはa)見苦しいものとb)簡単すぎるものです。私はおそらくstruct/classにカプセル化します。 –

+0

10個の入出力変数をハードコードするのではなく、stl :: vectorsを渡すとプログラムがより読みやすくフレキシブルになります。私はあなたにもより良い成績をあげると思います。 –

答えて

6

入力関数のパラメータリストが一致していません。トップバージョンと最下位バージョンの順序を変更しました。

下の1は次のようになります。

void input (ifstream& infile, float& test1, float& test2, float& test3, float& test4, float& test5, float& test6, float& test7, float& test8, float& test9, float& test10, string& studentname)

+0

ありがとう、私は小さなエラーがそのような大きなエラー出力を与える方法が大好きです。 –

+2

これは宿題ですが、OPに答えを出すのは不適切だと思います。私たちがそれをすると、彼らは彼らのために宿題をやり終え、彼らが学ぶのを助けません。 –

+3

通常は、私は同意します。しかし、実際に宿題をやってみることにしました。だから小さな助けが大丈夫です。 – DaV

2

コンパイラエラーundefined symbolは、あなたが何かを宣言し、コードのどこかでそれを使用しようとしましたが、あなたはそれを定義していないことを意味します。

これは宿題なので、私はあなたに答えをスプーンフィードするつもりはありませんが、あなたにそれを働かせます。私はあなたにヒントを与えます。エラーメッセージは、inputという名前の関数について不平を言っています。 inputという名前の宣言があり、inputという名前の定義もあります。彼らは同じですか?もっとよく見なさい。

2

あなたは関数input(ifstream &, float &, ...)を宣言しましたが、定義したことはありません。もちろん、コンパイラはそれを見つけることができません。おそらく関数input(float&, ...)は欠落していることを意図していたでしょうか?

ちなみに、ベクターなどを使ってデータを渡す方がよりエレガントです。これにより、コードはより一般的になります(今のところ正確に10個の数字を読み取るためにのみ機能します)。

関連する問題