Я не могу понять, как вернуть мой код и распечатать студента (ов) с наивысшим классом. Я был очень болен в этом семестре (моно), поэтому я пропустил немало лекций. Мне было интересно, сможет ли кто-нибудь помочь мне напечатать студента с наивысшим классом, сортным и средним. Спасибо!C++ найти наибольшее значение
Привет, я не могу заставить мой код распечатать ученика с самым высоким средним значением. Он печатает кучу чисел, а средний и буквенный листы не верны. Если бы кто-нибудь мог объяснить мне, что происходит, было бы замечательно!
#include <iostream>
#include <iomanip>
#include <string.h>
#include <fstream>
#include <stdio.h>
using namespace std;
struct Student {
string fName;
string lName;
int score1;
int score2;
int score3;
int score4;
int score5;
char letterGrade;
int averageTest;
};
void avgAndassignGrade(Student array[], int size);
void sortAlpha(Student array[], int size);
void PrintStudents(Student arr[], int size);
int findHighest(Student arr[], int size);
void PrintStudentsHighest(Student arr[], int grade, int size);
int main()
{
int counter=0;
Student class120[50];
ifstream file("grades.txt");
string line;
if (!file)
cout<<"No file found.";
if (file.is_open())
{
while (getline (file,line))
{
file >> class120[counter].fName
>> class120[counter].lName
>> class120[counter].score1
>> class120[counter].score2
>> class120[counter].score3
>> class120[counter].score4
>> class120[counter].score5;
counter++;
}
file.close();
}
avgAndassignGrade(class120, counter);
sortAlpha(class120, counter);
int grade = findHighest(class120, counter);
PrintStudents(class120, counter);
PrintStudentsHighest(class120, grade, counter);
}
void avgAndassignGrade(Student array[], int size)
{
for (int i = 0; i < size; i++)
{
int total = array[i].score1 + array[i].score2 + array[i].score3 + array[i].score4
+ array[i].score5;
array[i].averageTest = total/5;
if (array[i].averageTest > 89 && array[i].averageTest < 100)
array[i].letterGrade = 'A';
if (array[i].averageTest > 79 && array[i].averageTest < 90)
array[i].letterGrade= 'B';
if (array[i].averageTest > 69 && array[i].averageTest < 80)
array[i].letterGrade= 'C';
if (array[i].averageTest > 59 && array[i].averageTest < 70)
array[i].letterGrade = 'D';
if (array[i].averageTest < 60)
array[i].letterGrade = 'E';
}
}
void sortAlpha(Student array[],int size)
{
Student temp;
for (int j = 0; j < size - 1; j++)
{
for (int l = 0; l < size - 1; l++)
{
if (array[l].lName > array[l+1].lName)
{
temp = array[l];
array[l] = array[l+1];
array[l+1] = temp;
}
}
}
}
int findHighest(Student arr[], int size)
{
int large = arr[0].averageTest;
for (int i = 0; i < size; i++)
{
if (large < arr[i].averageTest) {
large = arr[i].averageTest;
}
}
return large;
}
void PrintStudents(Student arr[], int size) {
cout << "Name" << "\t\t" << "Average" << "\t\t" << "Grade" << "\n";
for (int i = 1; i < size; i++)
{
cout << arr[i].lName + "," + arr[i].fName << "\t\t" << arr[i].averageTest << "\t\t"
<< arr[i].letterGrade <<"\n";
}
}
void PrintStudentsHighest(Student arr[], int grade, int size) {
Student high;
for (int i = 0; i < size; i++)
{
if(arr[i].averageTest == grade)
high=arr[i];
}
cout << "The student(s) with the highest grade."<< '\n'
<< "Name"<<"\t\t"<<"Average"<<"\t\t"<<"Grade"<<"\n"
<< high.lName + "," + high.fName << "\t\t" << high.averageTest << "\t\t"
<< high.letterGrade << endl;
}
редактировать: Я изменил код. Теперь он печатает что-то для самого высокого уровня, но это всего лишь беспорядочный беспорядок чисел. Я пытаюсь найти Студента с HighhestAverage и распечатать его/ее имя в среднем и буквом.
Рассматривали ли вы разговор со своим профессором? Это их работа, чтобы помочь вам учиться. Если вы пропустили некоторые классы из-за болезни, большинство профессоров будут рады провести с вами дополнительное время, чтобы помочь вам изучить материал, который вы пропустили. – cdhowie
Вы также можете сравнить свою программу с программами, представленными другими людьми. Поиск StackOverflow для «массива классов C++» –
Существует много дубликатов, попробуйте выполнить поиск: https://www.google.com/search?q=stackoverflow+c%2B%2B+grade&ie=utf-8&oe=utf-8&aq= t & rls = org.mozilla: ru-US: official & client = firefox-a & channel = sb –