C++ Bc. 44 cpp
Řešení
#include <iostream> #include <iomanip> #include <fstream> #include <string> #include <map> struct Prospech { double znamky; int kredity; }; typedef std::map<std::string, Prospech> Map; int main() { Map seznam; std::ifstream inp("studenti.txt"); std::string prijmeni, jmeno, predmet; int kredity; char znamka; while (inp >> prijmeni >> jmeno >> predmet >> kredity >> znamka) { jmeno = prijmeni + ' ' + jmeno; double z; switch (znamka) { case 'A': z = 1.0; break; case 'B': z = 1.5; break; case 'C': z = 2.0; break; case 'D': z = 2.5; break; case 'E': z = 3.0; break; default : z = 4.0; } Prospech& p = seznam[jmeno]; p.znamky += z*kredity; p.kredity += kredity; } std::cout << std::fixed << std::setprecision(2); for (Map::iterator i=seznam.begin(); i!=seznam.end(); ++i) { std::string student = i->first; const Prospech& p = i->second; std::cout << p.znamky/p.kredity << " " << student << "\n"; } }
Vstupní data
Rambousek Pavel 153DASY 5 A Sedláček Pavel 101KOGG 5 C Bartošová Eva 152TEG1 6 B Herman Jakub 152APOT 4 A Špirk Ivo 101MA4G 5 C Nešporová Helena 152TEG1 6 D Ševčíková Irena 101KOGG 5 C Bartošová Eva 152MEG 3 B Princ Karel 101KOGG 5 C Princ Karel 152TCV1 6 E Herman Jakub 101MA3G 5 E Rambousek Pavel 101MA1G 8 A Špirk Ivo 153MAKA 5 D Sedláček Pavel 101AZNM 2 D Rambousek Pavel 153MAKA 5 B Bartošová Eva 101AZNM 2 A Herman Pavel 101MA3G 5 A Rambousek Pavel 101MA2G 6 D Ševčíková Irena 101AZNM 2 C Bartošová Eva 152APOT 4 E Herman Pavel 152TCV1 6 B Steiner Václav 151TGE2 6 A Bartošková Jana 152TCV2 6 D Rambousek Pavel 101MA3G 5 E Bartošová Eva 151TGE2 6 C Herman Jakub 153PJIN 5 E Bartošová Eva 152TEG2 7 A Lánová Pavla 101MA3G 5 C Herman Pavel 152MEG 3 A Steiner Václav 101MA2G 6 D Lánová Pavla 101MA4G 5 D Bartošková Jana 101MA2G 6 A Nešporová Helena 152TCV2 6 B Herman Pavel 152TEG2 7 B Bartošková Jana 101KOGG 5 A Špirk Ivo 152TCV1 6 B Nešporová Helena 153DASY 5 C Bartošková Jana 101MA1G 8 A Herman Pavel 153DASY 5 E Bartošková Jana 152MEG 3 D Ševčíková Irena 101MA4G 5 D Steiner Václav 101MA1G 8 E Bartošková Jana 152APOT 4 E Špirk Ivo 153PJIN 5 D Bartošková Jana 101MA4G 5 E Princ Karel 101MA4G 5 D Sedláček Pavel 101MA1G 8 E Herman Pavel 101MA2G 6 B Bartošová Eva 101MA4G 5 A Princ Karel 153DASY 5 E Sedláček Pavel 152TEG1 6 E Špirk Ivo 152APOT 4 A Nešporová Helena 101MA2G 6 C Menšík František 101MA3G 5 A Princ Karel 101MA3G 5 B Lánová Pavla 151TGE1 6 D Ševčíková Irena 152EMEG 6 C Nešporová Helena 152TCV1 6 B Sedláček Pavel 101MA2G 6 D Herman Pavel 152APOT 4 E Špirk Ivo 151TGE1 6 A Nešporová Helena 152EMEG 6 E Herman Jakub 152TEG1 6 A Lánová Pavla 101KOGG 5 C Herman Jakub 152TEG2 7 E Bartošová Eva 153PJIN 5 A Sedláček Pavel 153OSL 3 E Sedláček Pavel 151TGE2 6 B Herman Pavel 153PJIN 5 E Špirk Ivo 153OSL 3 A Steiner Václav 153DASY 5 A Steiner Václav 151TGE1 6 C Sedláček Pavel 153MAKA 5 C Princ Karel 101AZNM 2 B Sedláček Pavel 101MA4G 5 E Špirk Ivo 101KOGG 5 D Princ Karel 152TEG2 7 D Steiner Václav 152TEG1 6 D Ševčíková Irena 101MA2G 6 B Princ Karel 152APOT 4 C Ševčíková Irena 152APOT 4 D Sedláček Pavel 152TEG2 7 D Herman Jakub 101MA4G 5 B Herman Jakub 153MAKA 5 A Sedláček Pavel 152APOT 4 C Sedláček Pavel 153PJIN 5 B Bartošová Eva 152TCV1 6 C Herman Jakub 151TGE1 6 A Nešporová Helena 152APOT 4 D Princ Karel 152MEG 3 E Rambousek Pavel 152TEG2 7 A Herman Jakub 101AZNM 2 A Ševčíková Irena 153MAKA 5 C Nešporová Helena 151TGE1 6 C Steiner Václav 153OSL 3 D Špirk Ivo 101MA1G 8 C Menšík František 153OSL 3 C Sedláček Pavel 152MEG 3 E Ševčíková Irena 152TEG1 6 B Princ Karel 152TCV2 6 D Lánová Pavla 152TCV1 6 E Princ Karel 151TGE2 6 B Nešporová Helena 101KOGG 5 E Rambousek Pavel 152TEG1 6 B Herman Jakub 101MA2G 6 D Princ Karel 152EMEG 6 A Steiner Václav 101AZNM 2 C Bartošová Eva 152TCV2 6 E Herman Jakub 152EMEG 6 A Lánová Pavla 153MAKA 5 E Lánová Pavla 152MEG 3 E Herman Pavel 152TEG1 6 B Menšík František 101MA1G 8 E Lánová Pavla 153OSL 3 A Princ Karel 153MAKA 5 E Ševčíková Irena 101MA1G 8 A Herman Jakub 101MA1G 8 A Menšík František 152TCV2 6 A Rambousek Pavel 151TGE2 6 C Herman Pavel 152TCV2 6 A Špirk Ivo 152EMEG 6 B Herman Pavel 101KOGG 5 A Bartošová Eva 153OSL 3 A Bartošková Jana 101AZNM 2 D Menšík František 151TGE2 6 C Lánová Pavla 152EMEG 6 A Lánová Pavla 101MA2G 6 E Rambousek Pavel 101AZNM 2 A Bartošová Eva 101MA1G 8 B Sedláček Pavel 152TCV2 6 D Menšík František 153DASY 5 C Herman Jakub 151TGE2 6 B Rambousek Pavel 152MEG 3 C Špirk Ivo 152MEG 3 C Bartošková Jana 153OSL 3 E Rambousek Pavel 151TGE1 6 C Menšík František 152MEG 3 B Špirk Ivo 101MA2G 6 B Ševčíková Irena 152TEG2 7 C Menšík František 153PJIN 5 D Špirk Ivo 153DASY 5 B Bartošková Jana 101MA3G 5 E Lánová Pavla 101AZNM 2 C Špirk Ivo 101MA3G 5 B Bartošová Eva 151TGE1 6 D Menšík František 101KOGG 5 A Nešporová Helena 153MAKA 5 C Nešporová Helena 152MEG 3 D Ševčíková Irena 153PJIN 5 B Nešporová Helena 101AZNM 2 A Steiner Václav 101MA4G 5 D Nešporová Helena 101MA3G 5 B Steiner Václav 152TEG2 7 E Rambousek Pavel 101MA4G 5 D Nešporová Helena 151TGE2 6 D Herman Pavel 153MAKA 5 D Steiner Václav 152EMEG 6 E Sedláček Pavel 101MA3G 5 A Herman Jakub 153DASY 5 E Bartošová Eva 101KOGG 5 C Menšík František 152TEG1 6 A Rambousek Pavel 152TCV2 6 B Sedláček Pavel 151TGE1 6 A Menšík František 101AZNM 2 A Lánová Pavla 153PJIN 5 D Bartošová Eva 153DASY 5 C Rambousek Pavel 152APOT 4 A Nešporová Helena 101MA4G 5 B Menšík František 101MA2G 6 D Lánová Pavla 152TEG2 7 C Steiner Václav 152MEG 3 B Špirk Ivo 151TGE2 6 D Princ Karel 101MA1G 8 E Nešporová Helena 153PJIN 5 C Bartošková Jana 152TCV1 6 A Lánová Pavla 153DASY 5 A Steiner Václav 152TCV1 6 C Špirk Ivo 152TEG1 6 C Menšík František 152TEG2 7 A Rambousek Pavel 152TCV1 6 A Nešporová Helena 101MA1G 8 E Lánová Pavla 152TEG1 6 B Špirk Ivo 152TEG2 7 D Ševčíková Irena 152MEG 3 D Menšík František 153MAKA 5 B Herman Pavel 101MA4G 5 E Princ Karel 151TGE1 6 D Herman Pavel 151TGE1 6 A Herman Pavel 152EMEG 6 C Princ Karel 101MA2G 6 B Lánová Pavla 152APOT 4 E Špirk Ivo 152TCV2 6 C Steiner Václav 153PJIN 5 D Ševčíková Irena 153OSL 3 E Sedláček Pavel 152EMEG 6 E Bartošková Jana 152EMEG 6 B Herman Jakub 153OSL 3 A Bartošová Eva 153MAKA 5 C Lánová Pavla 151TGE2 6 C Herman Jakub 152MEG 3 A Nešporová Helena 152TEG2 7 C Herman Pavel 151TGE2 6 B Sedláček Pavel 153DASY 5 D Bartošová Eva 101MA3G 5 C Herman Pavel 101AZNM 2 D Lánová Pavla 101MA1G 8 A Lánová Pavla 152TCV2 6 A Menšík František 101MA4G 5 C Steiner Václav 101KOGG 5 C Herman Jakub 152TCV2 6 B Herman Jakub 101KOGG 5 D Rambousek Pavel 152EMEG 6 A Bartošková Jana 153MAKA 5 D Ševčíková Irena 151TGE1 6 D Herman Jakub 152TCV1 6 C Bartošová Eva 101MA2G 6 E Bartošková Jana 153DASY 5 C Rambousek Pavel 153OSL 3 B Špirk Ivo 101AZNM 2 D Princ Karel 153OSL 3 C Princ Karel 153PJIN 5 D Herman Pavel 101MA1G 8 A Ševčíková Irena 151TGE2 6 C Menšík František 152EMEG 6 A Menšík František 152APOT 4 D Bartošová Eva 152EMEG 6 A Menšík František 151TGE1 6 A Bartošková Jana 152TEG2 7 E Princ Karel 152TEG1 6 A Nešporová Helena 153OSL 3 D Herman Pavel 153OSL 3 D Rambousek Pavel 101KOGG 5 D Sedláček Pavel 152TCV1 6 D Rambousek Pavel 153PJIN 5 D Ševčíková Irena 152TCV2 6 B
Program pro vygenerování vstupních dat
#include <iostream> #include <string> #include <iomanip> #include <algorithm> #include <vector> using std::cout; using std::string; using std::random_shuffle; using std::vector; const char* studenti[] = { "Nešporová Helena", "Princ Karel ", "Rambousek Pavel ", "Herman Jakub ", "Herman Pavel ", "Sedláček Pavel ", "Bartošová Eva ", "Špirk Ivo ", "Menšík František", "Ševčíková Irena ", "Bartošková Jana ", "Lánová Pavla ", "Steiner Václav " }; const char* predmety[] = { "101MA1G 8", "101AZNM 2", "151TGE1 6", "152APOT 4", "152MEG 3", "153OSL 3", "101MA2G 6", "101KOGG 5", "151TGE2 6", "153DASY 5", "101MA3G 5", "152EMEG 6", "152TEG1 6", "152TCV1 6", "101MA4G 5", "152TEG2 7", "152TCV2 6", "153PJIN 5", "153MAKA 5" }; int main() { vector<string> data; std::srand(1234567890); const int S = sizeof studenti/sizeof (const char*); const int P = sizeof predmety/sizeof (const char*); for (int i=0; i<S; i++) { int n = 0; if (i>S/2) n = rand() % 5; // polovina studentu ma vsechny zkousky random_shuffle(predmety, predmety+P); for (int j=0; j<P-n; j++) { char znamka[] = {'A', 'B', 'C', 'D', 'E'}; int k = rand() % 5; string s = string(studenti[i]) + " " + predmety[j] + " " + znamka[k]; data.push_back(s); } } random_shuffle(data.begin(), data.end()); for (int i=0; i<data.size(); i++) { cout << data[i] << "\n"; } }
[ Zpět ]