In: Computer Science
Need someone to fix my code: based on this version, give me another version without adding struct student.
#include <iostream>
#include <iomanip>
using namespace std;
struct student
{
double firstQuizz;
double secondQuizz;
double midTerm;
double finalTerm;
double overallScore;
char gradeLetter;
string name;
};
void getStudentData(student &s);
void calcPercentage(student &s);
void gradeLetter(student &s);
void display(student s[],int n);
int main()
{
int n;
cout<<"enter the number of students"<<endl;
cin>>n;
struct student students[n];
int i; struct student istudent;
for(i=0;i<n;i++)
{
cout<<":: Student#"<<(i+1)<<"
::"<<endl;
getStudentData(students[i]);
}
for(i=0;i<n;i++)
{
calcPercentage(students[i]);
gradeLetter(students[i]);
}
display(students,n);
return 0;
}
void getStudentData(student &s)
{
cin.ignore();
cout<<"Student name?";
getline(cin,s.name);
cout<<"Enter marks in first quizz :";
cin>>s.firstQuizz;
cout<<"Enter marks in second quizz :";
cin>>s.secondQuizz;
cout<<"Enter marks in mid term :";
cin>>s.midTerm;
cout<<"Enter marks in final term :";
cin>>s.finalTerm;
}
Programming language: C++
void calcPercentage(student &s)
{
double overAllScore = (s.firstQuizz + s.secondQuizz)*5 * 0.25 +
s.midTerm * 0.25 + s.finalTerm* 0.50;
s.overallScore=overAllScore;
}
void gradeLetter(student &s)
{
double average=s.overallScore;
char gradeLetter;
if (average >= 90 && average<=100)
gradeLetter = 'A';
else if (average >= 80 && average < 90)
gradeLetter = 'B';
else if (average >= 70 && average < 80)
gradeLetter = 'C';
else if (average >= 60 && average < 70)
gradeLetter = 'D';
else if (average < 60)
gradeLetter = 'F';
s.gradeLetter=gradeLetter;
}
void display(student s[],int n)
{
//setting the precision to two
decimal places
std::cout << std::setprecision(2) <<
std::fixed;
cout<<setw(15)<<left<<"Name"<<setw(15)<<right<<"Overall
Score"<<setw(15)<<right<<"Grade
Letter"<<endl;
cout<<setw(15)<<left<<"----"<<setw(15)<<right<<"-------------"<<setw(15)<<right<<"------------"<<endl;
for(int i=0;i<n;i++)
{
cout<<setw(15)<<left<<s[i].name<<setw(15)<<right<<s[i].overallScore<<setw(15)<<right<<s[i].gradeLetter<<endl;
}
}
Programming language: C++
Requirement: based on this version, give me another version without adding struct student.
code:
#include <iostream>
#include <iomanip>
using namespace std;
void getStudentData(string &name, double &firstQuizz, double &secondQuizz, double &midTermMarks, double &finalTerm);
void calcPercentage(double firstQuizz, double secondQuizz, double midTermMarks, double finalTerm, double &overallScore);
void getGradeLetter(double overallScore, char &gradeLetter);
void display(string name[], double overallScore[], char gradeLetter[], int n);
int main()
{
int n;
cout << "enter the number of students" << endl;
cin >> n;
double firstQuizz[n];
double secondQuizz[n];
double midTermMarks[n];
double finalTerm[n];
double overallScore[n];
char gradeLetter[n];
string name[n];
int i;
for (i = 0; i < n; i++)
{
cout << ":: Student#" << (i + 1) << " ::" << endl;
getStudentData(name[i], firstQuizz[i], secondQuizz[i], midTermMarks[i], finalTerm[i]);
}
for (i = 0; i < n; i++)
{
calcPercentage(firstQuizz[i], secondQuizz[i], midTermMarks[i], finalTerm[i], overallScore[i]);
getGradeLetter(overallScore[i], gradeLetter[i]);
}
display(name, overallScore, gradeLetter, n);
return 0;
}
void getStudentData(string &name, double &firstQuizz, double &secondQuizz, double &midTermMarks, double &finalTerm)
{
cin.ignore();
cout << "Student name?";
getline(cin, name);
cout << "Enter marks in first quizz :";
cin >> firstQuizz;
cout << "Enter marks in second quizz :";
cin >> secondQuizz;
cout << "Enter marks in mid term :";
cin >> midTermMarks;
cout << "Enter marks in final term :";
cin >> finalTerm;
}
void calcPercentage(double firstQuizz, double secondQuizz, double midTermMarks, double finalTerm, double &overallScore)
{
overallScore = (firstQuizz + secondQuizz) * 0.25 + midTermMarks * 0.25 + finalTerm * 0.50;
}
void getGradeLetter(double overallScore, char &gradeLetter)
{
double average = overallScore;
if (average >= 90 && average <= 100)
gradeLetter = 'A';
else if (average >= 80 && average < 90)
gradeLetter = 'B';
else if (average >= 70 && average < 80)
gradeLetter = 'C';
else if (average >= 60 && average < 70)
gradeLetter = 'D';
else if (average < 60)
gradeLetter = 'F';
}
void display(string name[], double overallScore[], char gradeLetter[], int n)
{
//setting the precision to two decimal places
std::cout << std::setprecision(2) << std::fixed;
cout << setw(15) << left << "Name" << setw(15) << right << "Overall Score" << setw(15) << right << "Grade Letter" << endl;
cout << setw(15) << left << "----" << setw(15) << right << "-------------" << setw(15) << right << "------------" << endl;
for (int i = 0; i < n; i++)
{
cout << setw(15) << left << name[i] << setw(15) << right << overallScore[i] << setw(15) << right << gradeLetter[i] << endl;
}
}
Code ScreenShot:

output:

//for any query regarding the answer please ask in comment.