191k views
1 vote
Write a C++ program that opens and reads file question2.txt. File question1.txt has 3 students and 3 grades of each. You program should read values from file and assign values to 4 variables: (string) name, (double) grade1, (double) grade2, (double) grade3. Then, it should calculate the average grade of each student with the precision of 2 (use setprecision(n) function from header file) and find maximum and minimum grade in the class. Finally, you should have a report on both: • console screen • Output file named output2.txt in the following output format: Max Grade max Min Grade min Adam ave_grade John ave_grade Bill ave_grade

User Hi There
by
3.4k points

1 Answer

5 votes

Answer:

see explaination

Step-by-step explanation:

#include <fstream>

#include <iostream>

#include <string>

//to set precision

#include <iomanip>

#include <bits/stdc++.h>

//structure of student is created.

struct Student

{

std::string name;

double grade1;

double grade2;

double grade3;

double Average;

// Constructor initializes semester scores to 0.

Student()

{

grade1 = 0;

grade2 = 0;

grade3 = 0;

Average = 0;

}

//Read from the file and calculate the average, min and max grade with name.

void read(std::fstream& fil)

{

std::string temp;

fil >> name;

fil >> temp;

grade1 = std::stod(temp);

fil >> temp;

grade2 = std::stod(temp);

fil >> temp;

grade3 = std::stod(temp);

Average = ((grade1 + grade2 + grade3) /3.0);

}

//write to file- name and average with precision 2.

void write(std::fstream& fil)

{

fil << name << " " << std::setprecision(2) << std::fixed << Average << std::endl;

}

//Logic to calculate the minimum grade of the class.

double min()

{

double min = grade1;

if(min > grade2)

{

min = grade2;

}

if(min > grade3)

{

min = grade3;

}

return min;

}

//Logic to calculate the maximum grade of the class.

double max()

{

double max = grade1;

if(max < grade2)

{

max = grade2;

}

if(max < grade3)

{

max = grade3;

}

return max;

}

//Print the name and average with precision 2 in the console.

void print()

{

std::cout << name << " " ;

std::cout << std::setprecision(2) << std::fixed << Average << std::endl;

}

};

//As per this question,students are set to 3.

Student students[3];

//main method.

int main()

{

// Read from the file question2.txt

std::fstream fil;

fil.open("question2.txt", std::ios::in);

for(int i = 0; i < 3; i++)

students[i].read(fil);

fil.close();

// finding the max grade of the class.

int max = students[0].max();

int temp = students[1].max();

if(max <temp)

max = temp;

temp = students[2].max();

if(max < temp)

max = temp;

// finding the min grade of the class.

int min = students[0].min();

temp = students[1].min();

if(min > temp)

min = temp;

temp = students[2].min();

if(min > temp)

min = temp;

// print the output in console.

std::cout << "Max Grade " << max << std::endl;

std::cout << "Min Grade " << min << std::endl;

for(int i = 0; i < 3; i++)

students[i].print();

// write to output file output2.txt .

fil.open("output2.txt", std::ios::out);

fil << "Max Grade " << max << std::endl;

fil << "Min Grade " << min << std::endl;

for(int i = 0; i < 3; i++)

students[i].write(fil);

fil.close();

return 0;

}

User ChristopherDBerry
by
3.2k points