Я шел к этому и не могу найти правильный способ сделать это. Я оставил только код, который работает, потому что остальное просто смущает...
Создайте программу, используя 2 массива, содержащие набор данных класса для 10 учащихся: первый массив содержит имя и фамилию (в разных ячейках) учащихся, второй массив содержит оценки (всего 5) для каждого из учащиеся Создайте соответствующие функции для загрузки и отображения массива, включая среднюю и буквенную оценку учащегося. Удалите самую низкую оценку из средней оценки учащегося.
Я не прошу кого-то сделать это за меня, мне просто нужна помощь.
#include <cstdlib>
#include <iostream>
using namespace std;
const int CLASSIZE = 1;
struct student
{
string firstName;
string lastName;
void printTheInfo()
{
cout << "Name: " << firstName << " " << lastName;
}
void loadMe()
{
cout << "First Name: ";
cin >> firstName;
cout << "Last Name: ";
cin >> lastName;
}
};
struct grades
{
int grade1;
int grade2;
int grade3;
int grade4;
int grade5;
void printTheGrades()
{
cout << " Grades: " << grade1 << " " << grade2 << " " << grade3
<< " " << grade4 << " " << grade5 << endl;
}
void loadGrades()
{
cout << "Grade 1: ";
cin >> grade1;
cout << "Grade 2: ";
cin >> grade2;
cout << "Grade 3: ";
cin >> grade3;
cout << "Grade 4: ";
cin >> grade4;
cout << "Grade 5: ";
cin >> grade5;
}
};
void printAllStudents(student [], grades [], int);
void loadAllStudents(student [], grades [], int);
int main(int argc, char *argv[])
{
student theStudent[CLASSIZE];
grades theGrade[CLASSIZE];
loadAllStudents(theStudent, theGrade, CLASSIZE);
printAllStudents(theStudent, theGrade, CLASSIZE);
system("PAUSE");
return EXIT_SUCCESS;
}
void loadAllStudents(student theStudents[], grades theGrades[], int s)
{
for(int i = 0; i < s; i++)
{
theStudents[i].loadMe();
theGrades[i].loadGrades();
}
}
void printAllStudents(student theStudents[], grades theGrades[], int s)
{
for(int i = 0; i < s; i++)
{
theStudents[i].printTheInfo();
theGrades[i].printTheGrades();
}
}
grade1
...grade5
? Массивgrade[5]
был бы проще... - person Basile Starynkevitch   schedule 19.11.2011grades::PrintTheGrades
, чтобы сложитьgrade1 + grade2 + ... + grade5
вместе, и разделите его на 5, чтобы получить среднее и отображать его. Также Бэзил прав, было бы проще иметь массив целых чисел, таких какint allgrades[5]
вместоint grade1; int grade2; ...
И таким образом вы можете использовать цикл для суммирования всех оценок вместе. - person Seth Carnegie   schedule 19.11.2011char letterGrade(double d)
и передать ей оценку, которая является двойной.letterGrade
должен возвращать символ, представляющий оценку, и вы просто отображаете его. Например, если вы хотите отображать букву вместо цифры, в моем примере вы должны изменитьcout << endl << " Average: " << (average / NUMBER_OF_GRADES) << endl;
наcout << endl << " Average: " << letterGrade(average / NUMBER_OF_GRADES) << endl;
. - person Seth Carnegie   schedule 19.11.2011private
функцией-членомgrades
, выглядящей какchar letterGrade(double d) { ... }
- person Seth Carnegie   schedule 19.11.2011