Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <string>
- #include <cstdlib>
- class Students {
- private:
- struct Student {
- struct Grade
- {
- int math;
- int inform;
- int phys;
- };
- std::string surname;
- std::string name;
- std::string pantronymic;
- Grade grade;
- };
- std::vector<Student> data;
- std::ifstream ifs;
- void readData() {
- int start = 0, space = 0;
- for (char a; ifs.get(a);) {
- if (start != 0) {
- if (a != '\n') {
- if (space == 5) {
- if (a != ' ') {
- data.at(start - 1).grade.inform = std::atoi(( const char*) & a);
- }
- else {
- ++space;
- }
- }
- if (space == 4) {
- if (a != ' ') {
- data.at(start - 1).grade.phys = std::atoi(( const char*) & a);
- }
- else {
- ++space;
- }
- }
- if (space == 3) {
- if (a != ' ') {
- data.at(start - 1).grade.math = std::atoi(( const char*) & a);
- }
- else {
- ++space;
- }
- }
- if (space == 2) {
- if (a != ' ') {
- data.at(start - 1).pantronymic += a;
- }
- else {
- ++space;
- }
- }
- if (space == 1) {
- if (a != ' ') {
- data.at(start - 1).name += a;
- }
- else {
- ++space;
- }
- }
- if (space == 0) {
- if (a != ' ') {
- data.at(start - 1).surname += a;
- }
- else {
- ++space;
- }
- }
- }
- else {
- ++start;
- space = 0;
- }
- }
- else {
- if (a == '\n') {
- ++start;
- }
- if (a != '\n') {
- data.resize(std::atoi(( const char*) & a));
- }
- }
- }
- }
- void sortData() {
- for (int index_1 = 0; index_1 < data.size() - 1; ++index_1) {
- float midgradeindex_1 = (data.at(index_1).grade.inform + data.at(index_1).grade.math + data.at(index_1).grade.phys) / 3;
- bool over = true;
- for (int index_2 = index_1 + 1; index_2 < data.size(); ++index_2) {
- float midgradeindex_2 = (data.at(index_2).grade.inform + data.at(index_2).grade.math + data.at(index_2).grade.phys) / 3;
- if (midgradeindex_2 > midgradeindex_1) {
- over = false;
- std::swap(data.at(index_1), data.at(index_2));
- }
- }
- if (over) {
- break;
- }
- }
- }
- public:
- Students() {
- ifs.open("F:\\input_data.txt", std::ios::in);
- readData();
- sortData();
- }
- void printData() {
- for (auto& stuedents : data) {
- std::cout << stuedents.surname << " " << stuedents.name << " " << stuedents.pantronymic << " - " << "Информатика: " << stuedents.grade.inform
- << " Математика: " << stuedents.grade.math << " Физика: " << stuedents.grade.phys << std::endl;
- }
- }
- };
- void main() {
- setlocale(0, "");
- Students students;
- students.printData();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement