Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- vector <int> getGrades(vector<string> students,
- vector<string> subjects);
- vector<double> getStudentAverage(
- vector<int> grades,int sub,int stu);
- vector<double> getSubjectAverage(
- vector<int>grades,int sub,int stu);
- void printSubjectAverage(
- vector<string>subjects,
- vector<double>subjectAverage);
- void printStudentAverage(
- vector<string>students,
- vector<double>studentAverage);
- void printBestStudentAverage(
- vector<string>students,
- vector<double>studentAverage);
- int main(){
- vector <string>
- students {
- "Johnny", "Billy",
- "Dave", "Sam", "Mike"},
- subjects {
- "Physics", "Math","Arabic",
- "English", "History", "Biology"};
- vector<int> grades;
- vector<double>
- studentAverage,
- subjectAverage;
- grades = getGrades(students,subjects);
- studentAverage = getStudentAverage(grades,
- subjects.size(),students.size());
- subjectAverage = getSubjectAverage(grades,
- subjects.size(),students.size());
- printSubjectAverage(
- subjects,
- subjectAverage);
- printStudentAverage(
- students,
- studentAverage);
- printBestStudentAverage(
- students,
- studentAverage);
- return 0;
- }
- vector <int> getGrades(vector<string> students,
- vector<string> subjects)
- {
- int grade;
- vector <int> g;
- for ( auto e : students){
- cout<< e << endl;
- for(auto sb : subjects){
- cout<<sb<<endl;
- cin>>grade;
- g.push_back(grade);
- }
- cout<<"\n\n";
- }
- return g;
- }
- /*
- use i to control switch
- reset i for each student
- **/
- vector <double> getStudentAverage(
- vector<int> grades,
- int sub,int stu)
- {
- vector<double> sum (stu);
- int i=0;
- for(auto g : grades){
- switch(i){
- case 0:
- sum.at(0)+=g;
- break;
- case 1:
- sum.at(1)+=g;
- break;
- case 2:
- sum.at(2)+=g;
- break;
- case 3:
- sum.at(3)+=g;
- break;
- case 4:
- sum.at(4)+=g;
- break;
- }//end switch
- i++;
- if(i>=sub)
- i=0;
- }
- // create average
- for(int i=0;i<sum.size();i++)
- sum.at(i)/=sub;
- return sum;
- }
- /*
- same reasioning as above
- only this time it's using
- subjects with the i controling
- the switch
- **/
- vector<double> getSubjectAverage(
- vector<int>grades,int sub,int stu)
- {
- vector<double>sum(sub);
- int i=0;
- for(auto g : grades){
- switch(i){
- case 0:
- sum.at(0)+=g;
- break;
- case 1:
- sum.at(1)+=g;
- break;
- case 2:
- sum.at(2)+=g;
- break;
- case 3:
- sum.at(3)+=g;
- break;
- case 4:
- sum.at(4)+=g;
- break;
- case 5:
- sum.at(5)+=g;
- break;
- }//end switch
- i++;
- if(i>=sub)
- i=0;
- } //end for
- for(int i=0;i<sum.size();i++)
- sum.at(i)/=stu;
- return sum;
- }
- /*
- prints, they're matching
- sizes so use only one
- to control printing
- out both
- **/
- void printSubjectAverage(
- vector<string>subjects,
- vector<double>subjectAverage){
- cout<<"\nSubject Average\n";
- for(int i=0;i<subjects.size();i++){
- cout<<subjects.at(i)<<" ";
- cout<<subjectAverage.at(i)<<"\n";
- }
- cout<<"\n";
- }
- void printStudentAverage(
- vector<string>students,
- vector<double>studentAverage){
- cout<<"\nStudent Average\n";
- for(int i=0;i<students.size();i++){
- cout<<students.at(i)<<" "
- <<studentAverage.at(i)<<"\n";
- }
- cout<<"\n";
- }
- /*
- got max number
- needed a way to know
- which student had that
- number.
- simple, loop check,
- get student element number
- on match, print it.
- **/
- void printBestStudentAverage(
- vector<string>students,
- vector<double>studentAverage){
- double max = *max_element(studentAverage.begin(),
- studentAverage.end());
- int i=0;
- for(auto m : studentAverage){
- if(max == m){
- cout<<students.at(i)<<" has the best "
- <<"average "<<" "<<max<<endl;
- }
- i++;
- }
- cout<<"\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement