About assignment of c++
In put
Each Student name
Each Student father name
Each Student id number
Number of students
Number of subject
Each subject
Each subject credit hours
Each subject grade
Then calculate GPA
Out put
Student name
Student father name
Student Id number
GPA
If grade is F the student is fail.
The program must be display if you ask one student information.
#include <iostream>
#include <vector>
class Subject
{
private:
std::string name;
double mark;
int credit_value;
public:
Subject();
~Subject();
const std::string& get_name()
{
return name;
}
const double& get_mark()
{
return mark;
}
const int& get_credit_value()
{
return credit_value;
}
void set_credit_value(const int& credit_value)
{
this->credit_value = credit_value;
}
void set_name(const std::string& name)
{
this->name = name;
}
void set_mark(const double &mark)
{
this->name = name;
}
void input_subject()
{
std::cout << "Enter subject name : ";
std::cin >> name;
std::cout << "Enter mark : ";
std::cin >> mark;
std::cout << "Enter credit value : ";
std::cin >> credit_value;
}
void output_subject()
{
std::cout << name << " : " << mark<<" , Credit value : "<<credit_value << std::endl;
}
};
Subject::Subject()
{
}
Subject::~Subject()
{
}
class Student
{
public:
Student();
~Student();
void set_name(const std::string& name)
{
this->name = name;
}
void set_surname(const std::string& surname)
{
this->surname = surname;
}
void set_father_name(const std::string& father_name)
{
this->father_name = father_name;
}
void set_id(const int& id)
{
this->id = id;
}
const std::string& get_name()
{
return name;
}
const std::string& get_surname()
{
return surname;
}
const std::string& get_father_name()
{
return father_name;
}
const int& get_id()
{
return id;
}
const std::vector<Subject>& get_marks()
{
return marks;
}
void add_mark(const Subject& mark)
{
marks.push_back(mark);
}
void input_student()
{
int subjects=0;
std::cout << "Enter student name : ";
std::cin >> name;
std::cout << "Enter student surname : ";
std::cin >> surname;
std::cout << "Enter student father name : ";
std::cin >> father_name;
std::cout << "Enter student id : ";
std::cin >> id;
std::cout << "Number of subjects : ";
std::cin >> subjects;
marks.resize(subjects);
for (int i = 0; i < subjects; i++)
{
marks[i].input_subject();
}
}
void output_student()
{
std::cout << name << " " << surname << " " << father_name << std::endl;
std::cout << "Marks : ";
for (int i = 0; i < marks.size(); i++)
{
marks[i].output_subject();
}
double gpa = this->calculate_gpa();
if (gpa >= 90 && gpa <= 100)
{
std::cout << "GPA : "<<gpa<<" , A\n";
}
else if (gpa >= 85 && gpa < 90)
{
std::cout << "GPA : " << gpa << " , B\n";
}
else if (gpa >= 75 && gpa < 85)
{
std::cout << "GPA : " << gpa << " , C\n";
}
else if (gpa >= 65 && gpa < 75)
{
std::cout << "GPA : " << gpa << " , D\n";
}
else if (gpa >= 60 && gpa < 65)
{
std::cout << "GPA : " << gpa << " , E\n";
}
else if (gpa >= 0 && gpa < 60)
{
std::cout << "GPA : " << gpa << " , F , the student is fail\n";
}
std::cout << std::endl;
}
double calculate_gpa()
{
double res = 0;
double tmp1 = 0, tmp2 = 0;
for (int i = 0; i < marks.size(); i++)
{
tmp1 += marks[i].get_mark()*marks[i].get_credit_value();
tmp2 += marks[i].get_credit_value();
}
res = (double)tmp1 / (double)tmp2;
return res;
}
private:
std::string name;
std::string surname;
std::string father_name;
int id;
std::vector<Subject> marks;
};
Student::Student()
{
}
Student::~Student()
{
}
int main()
{
std::vector<Student> students;
int size = 0;
std::cout << "Enter number of students : ";
std::cin >> size;
students.resize(size);
for (int i = 0; i < size; i++)
{
students[i].input_student();
}
std::cout << "\nStudents :";
for (int i = 0; i < size; i++)
{
std::cout <<'\n' << i + 1 << ".";
students[i].output_student();
}
int id = 0;
std::cout << "Enter student id : ";
std::cin >> id;
bool found = 0;
for (int i = 0; i < students.size(); i++)
{
if (students[i].get_id() == id)
{
std::cout << "\n";
students[i].output_student();
std::cout << "\n";
found = 1;
break;
}
}
if(!found)
{
std::cout << "There is no student with such id\n";
}
system("pause");
return 0;
}
Comments
Leave a comment