In: Computer Science
I am also atteching input text file which contains 5 records for referance
this is test data
5
12 Gaurav 9 5
Gujarat,India
90 98 99 100 96
10 ABC 8 4
Mumbai,India
90 98 99 96
16 Utsav 9 4
Surat,India
88 98 99 100
1 Vivek 10 5
Gujarat,India
90 98 99 100 96
2 Akshit 9 5
Amd,India
90 90 88 100 96
#include <bits/stdc++.h>
using namespace std;
//Structure Defining Student Details
struct Student
{
int studentID;
string Name;
int GPA;
string Address;
int *scores;
int no_Of_scores;
};
//Print the records
void displayRecords(vector<Student>&v){
for(int i=0;i<v.size();i++){
cout<<"Details of Student "<<i+1<<endl;
cout<<"StudentId: "<<v[i].studentID<<endl;
cout<<"Name: "<<v[i].Name<<endl;
cout<<"Address: "<<v[i].Address<<endl;
cout<<"GPA: "<<v[i].GPA<<endl;
cout<<"Scores: ";
for(int j=0;j<v[i].no_Of_scores;j++){
cout<<v[i].scores[j]<<" ";
}
cout<<endl<<endl;
}
}
//If you want to sort according to GPA change v[index].studentId to v[index].GPA
int Partition(vector<Student>&v,int low,int high){
int pivot =v[high].studentID;
int i = (low - 1);
for (int j = low; j <= high - 1; j++)
{
if (v[j].studentID < pivot)
{
i++;
swap(v[i], v[j]);
}
}
swap(v[i + 1], v[high]);
return (i + 1);
}
//recursive function to sort vector of student
void QuickSort(vector<Student>&v,int low,int high){
if(low<high){
int partition_index=Partition(v,low,high);
QuickSort(v,low,partition_index-1);
QuickSort(v,partition_index+1,high);
}
}
int main()
{
//Uncomment the cout parts if you want to enter the details
//From console.That is for referance and better readability
//of code
//Reading file input
//Input format:
//No of student
//studentId,Name,GPA,No of Scores
//Address
//scores eg 5 10 12 13 ...
freopen("input.txt", "r", stdin);
//cout<<"Enter Required Details\n";
//cout<<"Enter Number Of Students\n";
int no_of_students;
cin >> no_of_students;
vector<Student> v;
int index=0;
while(index<no_of_students){
Student temp;
// cout<<"Enter StudentId,Name,GPA,Number Of Subjects Scores\n";
cin>>temp.studentID>>temp.Name>>temp.GPA>>temp.no_Of_scores;
//cout<<"Enter Address\n";
cin>>temp.Address;
temp.scores=new int[temp.no_Of_scores];
//cout<<"Enter Scores \n";
for(int i=0;i<temp.no_Of_scores;i++)
{
cin>>temp.scores[i];
}
v.push_back(temp);
index++;
}
cout<<"\n===Unsorted Details===\n\n";
displayRecords(v);
QuickSort(v,0,v.size()-1);
cout<<"\n===Sorted Details===\n\n";
displayRecords(v);
}