A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le.
#include <iostream> #include <fstream> #include <sstream> using namespace std; struct jelolt { int kerulet; int szavazatok; string nev; string part; string toString() { stringstream ss; ss << " " << kerulet << " " << szavazatok << " " << nev << " " << part << " " << endl; return ss.str(); } }; int main() { // 1. feladat ifstream input("szavazatok.txt"); int meret = 0; string tmp; while( getline(input,tmp) ) { meret++; } jelolt jeloltek[meret]; input.clear(); input.seekg(0); for( int i = 0; i < meret; i++ ) { string vnev; string knev; input >> jeloltek[i].kerulet >> jeloltek[i].szavazatok >> vnev >> knev >> jeloltek[i].part; jeloltek[i].nev = vnev + " " + knev; // cout << jeloltek[i].toString(); } input.close(); // 2. feladat cout << endl << "2. feladat" << endl; cout << "A helyhatosagi valasztason " << meret << " kepviselojelolt indult." << endl; // 3. feladat cout << endl << "3. feladat" << endl; cout << "Add meg egy kepviselojelolt vezetek es utonevet: "; string nev; getline(cin, nev); bool van = false; for( int i = 0; i < meret; i++ ) { if( jeloltek[i].nev == nev ) { cout << "A jelolt " << jeloltek[i].szavazatok << " db szavazatot kapott." << endl; van = true; break; } } if( van == false ) { cout << "Ilyen nevu kepviselojelolt nem szerepel a nyilvantartasban!" << endl; } // 4. feladat cout << endl << "4. feladat" << endl; int osszes = 0; for( int i = 0; i < meret; i++ ) { osszes += jeloltek[i].szavazatok; } cout.precision(4); cout << "A valasztason " << osszes << " allampolgar, a jogosultak " << (osszes/(double)12345)*100 << "%-a vett reszt." << endl; cout << endl << "5.feladat" << endl; int fuggetlen = 0; int gyumolcsevo = 0; int husevo = 0; int tejivo = 0; int zoldsegevo = 0; for(int i = 0; i < meret; i++) { if(jeloltek[i].part == "-") { fuggetlen += jeloltek[i].szavazatok; } else if(jeloltek[i].part == "GYEP") { gyumolcsevo += jeloltek[i].szavazatok; } else if(jeloltek[i].part == "HEP") { husevo += jeloltek[i].szavazatok; } else if(jeloltek[i].part == "TISZ") { tejivo += jeloltek[i].szavazatok; } else { zoldsegevo += jeloltek[i].szavazatok; } } double atlag = 0; atlag = (double) fuggetlen/osszes*100; cout << "Fuggetlen jeloltek " << atlag << "%" << endl; atlag = (double) gyumolcsevo/osszes*100; cout << "Gyumolcsevok Partja " << atlag << "%" << endl; atlag = (double) husevo/osszes*100; cout << "Husevok Partja " << atlag << "%" << endl; atlag = (double) tejivo/osszes*100; cout << "Tejivok Szovetsege " << atlag << "%" << endl; atlag = (double) zoldsegevo/osszes*100; cout << "Zoldsegevok Partja " << atlag << "%" << endl; cout << endl << "6. feladat" << endl; int max = jeloltek[0].szavazatok; for(int i = 1; i < meret; i++) { if(jeloltek[i].szavazatok > max) { max = jeloltek[i].szavazatok; } } for(int i = 0; i < meret; i++) { if(jeloltek[i].szavazatok == max) { if(jeloltek[i].part == "-") { cout << jeloltek[i].nev << " fuggetlen" << endl; } else { cout << jeloltek[i].nev << " " << jeloltek[i].part << endl; } } } // 7. feladat int nyertesek[9]; for(int i = 0; i < 9; i++) { nyertesek[i] = -1; } for(int i = 0; i < meret; i++) { int kerulet = jeloltek[i].kerulet; if( nyertesek[kerulet] == -1 || jeloltek[i].szavazatok > jeloltek[nyertesek[kerulet]].szavazatok) { nyertesek[kerulet] = i; } } ofstream ki("kepviselok.txt"); for(int i = 1; i < 9; i++) { if(jeloltek[nyertesek[i]].part == "-") { ki << i << " " << jeloltek[nyertesek[i]].nev << " " << "fuggetlen" << endl; } else { ki << i << " " << jeloltek[nyertesek[i]].nev << " " << jeloltek[nyertesek[i]].part << endl; } } ki.close(); return 0; }
Ha hibát találsz benne, kérlek jelezd!
Tetszik a kód, abszolút hasznos az érettségi felkészüléshez. Egy gondom van, Visual Studiot valasztottam IDEnek.
jelolt jeloltek[meret];
input.clear();
input.seekg(0);
Részt nem tudja értelmezni mert a paraméterben nem konstans van.
Slusszpoén, a CodeBlocks simán lefutatja. Esetleg valami orvoslást tud erre?
Ebben sajnos nem tudok segíteni, én CodeBlocks-szal dolgoztam csak.