In C++, I am having the same error problems that i can not seem to fix? Help please!?
-
I have put mark where the error is and what the error message is on the code The code: #include<iostream> #include<string> #include<fstream> #include<iomanip> #include<cstdlib> using namespace std; void calculateAvgerage( ifstream&, ofstream&, double& ); << First Error ^^^ The code above is the first error Error Message: error: in passing argument 1 of 'void calculateAvgerage(std::ifstream&, std::ofstream&, double&)'| char calculateGrade( double totalAvg ); int main( ) { char fileName[20]; double scoreAvg; double average = 0; int counter = 0; string name; ifstream inFile; ofstream outFile; //To read and store data cout<<"Enter input file name: "<<endl; cin>>fileName; inFile.open(fileName); if(!inFile) { cout<<"input file did not open please check it\n"<<endl; system("pause"); return 1; } cout<<"Enter output file name: "<<endl; cin>>fileName; outFile.open(fileName); outFile << fixed << showpoint << setprecision(2); outFile << "Student Test1 Test2 Test3 Test4 Test5 Average Grade"<< endl; while ( inFile.good() ) { inFile >> name; if ( !inFile ) break; outFile << setw( 10 ) << left << name; calculateAvgerage ( inFile, outFile, scoreAvg ); outFile << setw( 10 ) << right << scoreAvg; outFile << setw( 6 ) << right << calculateAvgerage(scoreAvg)<<endl; << Second Error ^^^^ The code above is the second error: Error Message: error: invalid initialization of reference of type 'std::ifstream&' from expression of type 'double'| counter++; average += scoreAvg; } // output the results average = average/counter; outFile << endl << "Class Average = " << average; inFile.close( ); outFile.close( ); system("pause"); return 0; } void calculateAvgerage( ifstream& input, ofstream& output, double& scoreavg ) { double scoreAvg=0; int score; for ( int i = 0; i < 5; i++ ) { input >> score; output << setw( 7 ) << right << score; scoreavg += score; } scoreAvg =scoreAvg/ 5.0; } char calculateGrade( double totalAvg ) { if ( totalAvg >=90 ) return 'A'; else if ( totalAvg >=80 ) return 'B'; else if ( totalAvg>=70 ) return 'C'; else if ( totalAvg >=60 ) return 'D'; else return 'F'; } ______________________ What am i doing wrong and how can i fix these errors?
-
Answer:
1. I changed the prototype of your calculateAvgerage function to accomodate an additional optional parameter designating the fieldwidth for the test scores. 2. In function calculateAvgerage the following changes were applied: a) omit variable double scoreAvg in favour of using the scoreavg parameter; b) using the iFieldwidth parameter instead of the arbitrary value 7 3. In function main I broke down your title using iFieldwidth as width designator 4. Function calculateAvgerage. a) It is declared void. So you cannot use it together width cout. In case you would declare this function double, then you could leave your notation. However, you then would return a double and wouldn't need to pass the third parameter as a reference b) calculateAvgerage takes three (now four) parameters. In your function call you only used one. I hope that this helps! Cheers
MichaelInScarborough at Yahoo! Answers Visit the source
Other answers
1. I changed the prototype of your calculateAvgerage function to accomodate an additional optional parameter designating the fieldwidth for the test scores. 2. In function calculateAvgerage the following changes were applied: a) omit variable double scoreAvg in favour of using the scoreavg parameter; b) using the iFieldwidth parameter instead of the arbitrary value 7 3. In function main I broke down your title using iFieldwidth as width designator 4. Function calculateAvgerage. a) It is declared void. So you cannot use it together width cout. In case you would declare this function double, then you could leave your notation. However, you then would return a double and wouldn't need to pass the third parameter as a reference b) calculateAvgerage takes three (now four) parameters. In your function call you only used one. I hope that this helps! Cheers
MichaelI...
Try actually giving your parameters arbitrary names like this void calculateAvgerage( ifstream &input, ofstream &output, double & number ); double number should probably also be an array, but it's your choice on how to implement it. The second error comes from the fact you're not correctly calling your "calculate Avgerage function" (and you spelled average incorrectly) You should call it like this outFile << setw( 6 ) << right << calculateAvgerage(input,output,number)<<… << Second Error
include<iostream> #include<string> #include<fstream> #include<iomanip> #include<cstdlib> using namespace std; void calculateAverage ( ifstream* inFile, ofstream* outFile, double* scoreAvg ); char calculateGrade( double totalAvg ); int main( ) { char fileName[20]; double scoreAvg; double average = 0; int counter = 0; string name; ifstream inFile; ofstream outFile; //To read and store data cout<<"Enter input file name: "<<endl; cin>>fileName; inFile.open(fileName); if(!inFile) { cout<<"input file did not open please check it\n"<<endl; system("pause"); return 1; } cout<<"Enter output file name: "<<endl; cin>>fileName; outFile.open(fileName); outFile << fixed << showpoint << setprecision(2); outFile << "Student Test1 Test2 Test3 Test4 Test5 Average Grade"<< endl; while ( inFile.good() ) { inFile >> name; if ( !inFile ) break; outFile << setw( 10 ) << left << name; calculateAverage ( &inFile, &outFile, &scoreAvg ); outFile << setw( 10 ) << right << scoreAvg; outFile << setw( 6 ) << right << calculateGrade(scoreAvg)<<endl; counter++; average += scoreAvg; } // output the results average = average/counter; outFile << endl << "Class Average = " << average; inFile.close( ); outFile.close( ); system("pause"); return 0; } void calculateAverage ( ifstream* input, ofstream* output, double* scoreAvg ) { double scoreavg=0; int score; for ( int i = 0; i < 5; i++ ) { *input >> score; *output << setw( 7 ) << right << score; scoreavg += score; } *scoreAvg = scoreavg / 5.0; } char calculateGrade( double totalAvg ) { if ( totalAvg >=90 ) return 'A'; else if ( totalAvg >=80 ) return 'B'; else if ( totalAvg>=70 ) return 'C'; else if ( totalAvg >=60 ) return 'D'; else return 'F'; }
Thor
include<iostream> #include<string> #include<fstream> #include<iomanip> #include<cstdlib> using namespace std; void calculateAverage ( ifstream* inFile, ofstream* outFile, double* scoreAvg ); char calculateGrade( double totalAvg ); int main( ) { char fileName[20]; double scoreAvg; double average = 0; int counter = 0; string name; ifstream inFile; ofstream outFile; //To read and store data cout<<"Enter input file name: "<<endl; cin>>fileName; inFile.open(fileName); if(!inFile) { cout<<"input file did not open please check it\n"<<endl; system("pause"); return 1; } cout<<"Enter output file name: "<<endl; cin>>fileName; outFile.open(fileName); outFile << fixed << showpoint << setprecision(2); outFile << "Student Test1 Test2 Test3 Test4 Test5 Average Grade"<< endl; while ( inFile.good() ) { inFile >> name; if ( !inFile ) break; outFile << setw( 10 ) << left << name; calculateAverage ( &inFile, &outFile, &scoreAvg ); outFile << setw( 10 ) << right << scoreAvg; outFile << setw( 6 ) << right << calculateGrade(scoreAvg)<<endl; counter++; average += scoreAvg; } // output the results average = average/counter; outFile << endl << "Class Average = " << average; inFile.close( ); outFile.close( ); system("pause"); return 0; } void calculateAverage ( ifstream* input, ofstream* output, double* scoreAvg ) { double scoreavg=0; int score; for ( int i = 0; i < 5; i++ ) { *input >> score; *output << setw( 7 ) << right << score; scoreavg += score; } *scoreAvg = scoreavg / 5.0; } char calculateGrade( double totalAvg ) { if ( totalAvg >=90 ) return 'A'; else if ( totalAvg >=80 ) return 'B'; else if ( totalAvg>=70 ) return 'C'; else if ( totalAvg >=60 ) return 'D'; else return 'F'; }
Try actually giving your parameters arbitrary names like this void calculateAvgerage( ifstream &input, ofstream &output, double & number ); double number should probably also be an array, but it's your choice on how to implement it. The second error comes from the fact you're not correctly calling your "calculate Avgerage function" (and you spelled average incorrectly) You should call it like this outFile << setw( 6 ) << right << calculateAvgerage(input,output,number)<<... << Second Error
Igotreported
Related Q & A:
- The pores on my face are wideninf by the minute. Please help me so that I can have them the normal size?Best solution by Yahoo! Answers
- Knee problems help please?Best solution by Yahoo! Answers
- Why do I have to sign in several times before I can get into my Email?Best solution by email.about.com
- I can't access my e-mail account. Please help.Best solution by Yahoo! Answers
- Im new to ebay..can i have your help please?Best solution by Yahoo! Answers
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.