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 meccs { int fordulo; int hgol; int vgol; int hfgol; int vfgol; string hazai; string vendeg; string eredmeny() { stringstream ss; if ( hgol > vgol ) { ss << hgol << "-" << vgol; } else { ss << vgol << "-" << hgol; } return ss.str(); } bool hazai_kikapott() { return vgol > hgol; } string forditott() { if ( hgol > vgol && hfgol < vfgol ) { return hazai; } else if ( vgol > hgol && vfgol < hfgol ) { return vendeg; } else { return "-" ; } } string toString() { stringstream ss; ss << fordulo << " " << hgol << " " << vgol << " " << hfgol << " " << vfgol << " " << hazai << " " << vendeg << endl; return ss.str(); } }; int main() { // 1. feladat cout << endl << "1. feladat" << endl; ifstream input( "meccs.txt" ); int meret; input >> meret; meccs meccsek[meret]; for ( int i = 0; i < meret; i++ ) { input >> meccsek[i].fordulo >> meccsek[i].hgol >> meccsek[i].vgol >> meccsek[i].hfgol >> meccsek[i].vfgol >> meccsek[i].hazai >> meccsek[i].vendeg; cout << meccsek[i].toString(); } input.close(); // 2. feladat cout << endl << "2. feladat" << endl; int fordulo; cout << "Adja meg a fordulo szamat: " ; cin >> fordulo; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].fordulo == fordulo ) { cout << meccsek[i].hazai << "-" << meccsek[i].vendeg << ": " << meccsek[i].hgol << "-" << meccsek[i].vgol << " (" << meccsek[i].hfgol << "-" << meccsek[i].vfgol << ")" << endl; } } // 3. feladat cout << endl << "3. feladat" << endl; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].forditott() != "-" ) { cout << meccsek[i].fordulo << " " << meccsek[i].forditott() << endl; } } // 4. feladat cout << endl << "4. feladat" << endl; string csapat; cout << "Adjon meg egy csapatnevet: " ; cin >> csapat; // 5. feladat cout << endl << "5. feladat" << endl; int lott = 0; int kapott = 0; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].hazai == csapat ) { lott += meccsek[i].hgol; kapott += meccsek[i].vgol; } else if ( meccsek[i].vendeg == csapat ) { lott += meccsek[i].vgol; kapott += meccsek[i].hgol; } } cout << "lott: " << lott << " kapott: " << kapott << endl; // 6. feladat cout << endl << "6. feladat" << endl; // 1. megoldas // kivalogatjuk azokat a meccseket, // ahol a hazai csapat kikapott int db = 0; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].hazai == csapat && meccsek[i].hazai_kikapott() ) { db++; } } meccs hazaikikapott[db]; db = 0; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].hazai == csapat && meccsek[i].hazai_kikapott() ) { hazaikikapott[db] = meccsek[i]; db++; } } // megnezzuk, hogy a 21 fordulotol van-e kisebb // (21-es fordulo nem letezhet, tehat ha van kisebb, // akkor kikapott otthon) int min = 21; for ( int i = 0; i < db; i++ ) { if ( hazaikikapott[i].fordulo < min ) { min = hazaikikapott[i].fordulo; } } if ( min == 21 ) { cout << "A csapat otthon veretlen maradt." << endl; } else { cout << "A csapat eloszor a " << min << " forduloban kapott ki eloszor otthon." << endl; } // 2. megoldas // 21-es fordulo nincs, igy ha attol kisebbet talalunk, // akkor kikapott int fordulomin = 21; for ( int i = 0; i < meret; i++ ) { if ( meccsek[i].hazai == csapat && meccsek[i].hazai_kikapott() && meccsek[i].fordulo < fordulomin ) { fordulomin = meccsek[i].fordulo; } } if ( fordulomin == 21 ) { cout << "A csapat otthon veretlen maradt." << endl; } else { cout << "A csapat eloszor a " << fordulomin << " forduloban kapott ki eloszor otthon." << endl; } // 7. feladat cout << endl << "7. feladat" << endl; string eredmenyek[100]; int erdarab[100] = {0}; db = 0; for ( int i = 0; i < meret; i++ ) { int hely = 0; while ( hely < db && eredmenyek[hely] != meccsek[i].eredmeny() ) { hely++; } if ( hely == db ) { eredmenyek[db] = meccsek[i].eredmeny(); db++; } erdarab[hely]++; } // nem feladat, de az eredmenyeket meg az eredmeny // tipusa szerint sorba is lehetne rendezni for ( int i = 0; i < db-1; i++ ) { for ( int j = i+1; j < db; j++ ) { if ( eredmenyek[i] > eredmenyek[j] ) { swap(eredmenyek[i], eredmenyek[j] ); swap(erdarab[i], erdarab[j] ); } } } ofstream output( "stat.txt" ); for ( int i = 0; i < db; i++ ) { output << eredmenyek[i] << ": " << erdarab[i] << " darab" << endl; } return 0; } |
Kedves Csaba!
A 6. feladatban azt is meg kell adni, hogy melyik csapat verte meg a hazai csapatot. Ez hiányzik a megoldásodból.
A feladathoz adott 2. megoldásod 197-es sora után be lehetne szúrni egy string-változót, amelyben tárolhatod a nyertes csapat nevét.
Nem kötekedni akartam, csak észrevettem.
Üdv
Kriszta