#include <iostream>
#include <string>
using namespace std;
struct subj {
double f_mark;
double lab_mark;
double sec_mark;
};
struct student {
string name;
int rID;
int age;
subj s1;
subj s2;
subj s3;
subj s4;
subj s5;
};
double tot_marks(subj s) {
double total = s.f_mark + s.lab_mark + s.sec_mark;
return total;
}
double compute_average_mark(student s) {
double avmark = ( tot_marks(s.s1) + tot_marks(s.s2) + tot_marks(s.s3) + tot_marks(s.s4) + tot_marks(s.s5)) / 5;
return avmark;
}
double compute_total_mark(student s) {
double totmark = (tot_marks(s.s1) + tot_marks(s.s2) + tot_marks(s.s3) + tot_marks(s.s4) + tot_marks(s.s5));
return totmark;
}
string get_grade(student s) {
if (compute_average_mark(s) > 100 || compute_average_mark(s) < 0)
return ("out of range ... please check your input again") ;
else {
if (compute_average_mark(s) >= 90)
return (" Exellent ");
else if (compute_average_mark(s) < 90 && compute_average_mark(s) >= 80)
return (" Well done ");
else if (compute_average_mark(s) < 80 && compute_average_mark(s) >= 70)
return (" Good ");
else if (compute_average_mark(s) < 70 && compute_average_mark(s) >= 60)
return (" Need improvement ");
else
return (" fail ");
}
}
void display_info(student s) {
cout << " student name is " << s.name << endl;
cout << " student id is " << s.rID << endl;
cout << " student age is " << s.age << endl;
cout << " student total mark is " << compute_total_mark(s) << endl;
cout << " student grade is " << get_grade(s) << endl;
cout << endl;
}
int main()
{
int num;
cout << "enter number of students \n";
cin >> num;
student* arr = new student[num];
for (int i = 0; i < num; i++)
{
cout << "enter student's name & age & id \n";
cin >> arr[i].name >> arr[i].age >> arr[i].rID;
cout << "enter final & lab & section marks for subject 1 \n";
cin >> arr[i].s1.f_mark >> arr[i].s1.lab_mark >> arr[i].s1.sec_mark;
cout << "enter final & lab & section marks for subject 2 \n";
cin >> arr[i].s2.f_mark >> arr[i].s2.lab_mark >> arr[i].s2.sec_mark;
cout << "enter final & lab & section marks for subject 3 \n";
cin >> arr[i].s3.f_mark >> arr[i].s3.lab_mark >> arr[i].s3.sec_mark;
cout << "enter final & lab & section marks for subject 4 \n";
cin >> arr[i].s4.f_mark >> arr[i].s4.lab_mark >> arr[i].s4.sec_mark;
cout << "enter final & lab & section marks for subject 5 \n";
cin >> arr[i].s5.f_mark >> arr[i].s5.lab_mark >> arr[i].s5.sec_mark;
compute_average_mark(arr[i]);
compute_total_mark(arr[i]);
}
for (int i = 0; i < num; i++)
{
display_info(arr[i]);
}
int temp=0;
for (int i = 0; i < num; i++)
{
double temp1 = compute_average_mark(arr[0]);
if (compute_average_mark(arr[i]) > temp1)
{
temp = i;
temp1 = compute_average_mark(arr[i]);
}
}
cout << "student with maximum grade is " << arr[temp].name << endl;
cout << endl;
int sID;
cout << "enter a specific id \n";
cin >> sID;
for (int i = 0; i < num; i++)
{
if (sID == arr[i].rID)
cout << "student with this id is " << arr[i].name << endl;
else
cout << "no student has this id \n";
}
system("pause");
return 0;
}
What I have tried:
#include <iostream>
#include <string>
using namespace std;
struct subj {
double f_mark;
double lab_mark;
double sec_mark;
};
struct student {
char name;
int rID;
int age;
subj s1;
subj s2;
subj s3;
subj s4;
subj s5;
};
double tot_marks(subj s) {
double total = s.f_mark + s.lab_mark + s.sec_mark;
return total;
}
double compute_average_mark(student s) {
double avmark = (tot_marks(s.s1) + tot_marks(s.s2) + tot_marks(s.s3) + tot_marks(s.s4) + tot_marks(s.s5)) / 5;
return avmark;
}
double compute_total_mark(student s) {
double totmark = (tot_marks(s.s1) + tot_marks(s.s2) + tot_marks(s.s3) + tot_marks(s.s4) + tot_marks(s.s5));
return totmark;
}
void get_grade(student s) {
if (compute_average_mark(s) > 100 || compute_average_mark(s) < 0)
printf("out of range ... please check your input again");
else {
if (compute_average_mark(s) >= 90)
printf(" Exellent ");
else if (compute_average_mark(s) < 90 && compute_average_mark(s) >= 80)
printf(" Well done ");
else if (compute_average_mark(s) < 80 && compute_average_mark(s) >= 70)
printf(" Good ");
else if (compute_average_mark(s) < 70 && compute_average_mark(s) >= 60)
printf(" Need improvement ");
else
printf(" fail ");
}
}
void display_info(student s) {
printf(" student name is\n ", s.name);
printf( " student id is \n", s.rID);
printf(" student age is\n ", s.age);
printf (" student total mark is\n ", compute_total_mark(s));
printf("\n");
}
int main()
{
int num;
printf( "enter number of students \n");
scanf_s("%d", num);
student*arr = new student[num];
for (int i = 0; i < num; i++)
{
printf( "enter student's name & age & id \n");
scanf_s("%s%d%d", arr[i].name, arr[i].age, arr[i].rID);
printf("enter final & lab & section marks for subject 1 \n");
scanf_s("%d%d%d", arr[i].s1.f_mark, arr[i].s1.lab_mark, arr[i].s1.sec_mark);
printf("enter final & lab & section marks for subject 2 \n");
scanf_s("%d%d%d", arr[i].s2.f_mark, arr[i].s2.lab_mark, arr[i].s2.sec_mark);
printf("enter final & lab & section marks for subject 3 \n");
scanf_s("%d%d%d", arr[i].s3.f_mark, arr[i].s3.lab_mark, arr[i].s3.sec_mark);
printf("enter final & lab & section marks for subject 4 \n");
scanf_s("%d%d%d", arr[i].s4.f_mark, arr[i].s4.lab_mark, arr[i].s4.sec_mark);
printf("enter final & lab & section marks for subject 5 \n");
scanf_s("%d%d%d", arr[i].s5.f_mark, arr[i].s5.lab_mark, arr[i].s5.sec_mark);
compute_average_mark(arr[i]);
compute_total_mark(arr[i]);
}
for (int i = 0; i < num; i++)
{
display_info(arr[i]);
}
int temp = 0;
for (int i = 0; i < num; i++)
{
double temp1 = compute_average_mark(arr[0]);
if (compute_average_mark(arr[i]) > temp1)
{
temp = i;
temp1 = compute_average_mark(arr[i]);
}
}
printf("student with maximum grade is ", arr[temp].name);
printf("\n");
int sID;
printf("enter a specific id \n");
scanf_s("%d", sID);
for (int i = 0; i < num; i++)
{
if (sID == arr[i].rID)
printf("student with this id is ", arr[i].name);
else
printf( "no student has this id \n");
}
return 0;
}