Поради ограничението на сайта за изпращане до 8000 символа изпращам решението на 3 съобщения. Първото тук съдържа само хедъра, а следващите 2 са част от сорса. За тестване на решението е необходимо единствено да бъде извикан метода run() на описания тук клас:
#ifndef SCHOOLSTATS_H_
#define SCHOOLSTATS_H_
#include <string>
#define MAX_STUDENT_COUNT 25
using namespace std;
namespace school_stats {
class SchoolStats {
private:
typedef enum Subject_e {
ESubject_Undefined = 0,
ESubject_S1,
ESubject_S2,
ESubject_S3,
ESubject_S4,
ESubject_S5,
ESubject_S6,
ESubject_S7,
ESubject_S8,
ESubject_S9,
ESubject_S10,
ESubject_Max,
} Subject_t;
unsigned int student_amount;
string studentNames[MAX_STUDENT_COUNT];
string subjectNames[ESubject_Max];
unsigned int tableClass[MAX_STUDENT_COUNT][ESubject_Max];
typedef enum program_state_e {
EStateUndefined = 0,
EReadStudentsCountData,
EReadStudentsNamesData,
EReadSubjectNamesData,
EReadStudentsGradesData,
EFindAverageClassGrade,
EFindMinAndMaxAvgGradeSubjects,
EFindStudentsRepeatingExams,
EFindSubjectsWithRepeaters,
EStateMax
} program_state_t;
program_state_t state;
void printMenu();
program_state_t getCurrentState();
string stateToString(program_state_t _state);
void readUserStateRequest();
void processCurrentState();
void dumpCurrentData();
public:
SchoolStats();
virtual ~SchoolStats();
void run();
};
} /* namespace school_stats */
#endif /* SCHOOLSTATS_H_ */