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; class uzenet { public: int ora; int perc; string szam; string uzenet; int hossz; string toString() { stringstream ss; ss << "ora: " << ora << ", perc: " << perc << ", szam: " << szam << ", uzenet: " << uzenet << endl; return ss.str(); } }; int main() { // 1. feladat cout << endl << "1. feladat" << endl; int meret; ifstream input("sms.txt"); input >> meret; uzenet uzenetek[meret]; string tmp; for( int i = 0; i < meret; i++ ) { input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam; input.get(); /* vagy input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam; getline(input, tmp); */ /* vagy input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam; input.ignore(1, '\n'); */ getline(input, uzenetek[i].uzenet); uzenetek[i].hossz = uzenetek[i].uzenet.length(); // cout << uzenetek[i].toString(); } // 2. feladat cout << endl << "2. feladat" << endl; if( meret > 10 ) { cout << uzenetek[9].uzenet << endl; } else { cout << uzenetek[meret-1].uzenet << endl; } // 3. feladat cout << endl << "3. feladat" << endl; int min = 0; int max = 0; for( int i = 1; i < meret; i++ ) { if( uzenetek[i].hossz > uzenetek[max].hossz ) { max = i; } if( uzenetek[i].hossz < uzenetek[min].hossz ) { min = i; } } cout << "A leghosszabb uzenet adatai: " << uzenetek[max].ora << " " << uzenetek[max].perc << " " << uzenetek[max].szam << " " << uzenetek[max].uzenet << endl; cout << "A legrovidebb uzenet adatai: " << uzenetek[min].ora << " " << uzenetek[min].perc << " " << uzenetek[min].szam << " " << uzenetek[min].uzenet << endl; // 4. feladat cout << endl << "4. feladat" << endl; int hosszok[5] = {0}; for( int i = 0; i < meret; i++ ) { if( uzenetek[i].hossz <= 20 ) { hosszok[0]++; } else if( uzenetek[i].hossz >= 21 && uzenetek[i].hossz <= 40 ) { hosszok[1]++; } else if( uzenetek[i].hossz >= 41 && uzenetek[i].hossz <= 60 ) { hosszok[2]++; } else if( uzenetek[i].hossz >= 61 && uzenetek[i].hossz <= 80 ) { hosszok[3]++; } else // a többi úgyis maximum 100 hosszú lehet { hosszok[4]++; } // valójában nem kell ennyi vizsgálat, ha megfelelő sorrendben vizsgáljuk /* if( uzenetek[i].hossz <= 20 ) { hosszok[0]++; } else if( uzenetek[i].hossz <= 40 ) { hosszok[1]++; } else if( uzenetek[i].hossz <= 60 ) { hosszok[2]++; } else if( uzenetek[i].hossz <= 80 ) { hosszok[3]++; } else { hosszok[4]++; } */ } cout << "1-20 " << hosszok[0] << endl; cout << "21-40 " << hosszok[1] << endl; cout << "41-60 " << hosszok[2] << endl; cout << "61-80 " << hosszok[3] << endl; cout << "81-100 " << hosszok[4] << endl; /* 4. feladat megoldása többszörös megszámlálással int hosszok[5] = {0}; for( int i = 0; i < meret; i++ ) { hosszok[(uzenetek[i].hossz-1) / 20]++; } cout << "1-20 " << hosszok[0] << endl; cout << "21-40 " << hosszok[1] << endl; cout << "41-60 " << hosszok[2] << endl; cout << "61-80 " << hosszok[3] << endl; cout << "81-100 " << hosszok[4] << endl; */ // 5. feladat cout << endl << "5. feladat" << endl; int orak[24] = {0}; for( int i = 0; i < meret; i++ ) { orak[uzenetek[i].ora]++; } int szum = 0; for( int i = 0; i < 24; i++ ) { if( orak[i] > 10 ) { szum += orak[i] - 10; } } cout << szum << endl; // 6. feladat cout << endl << "6. feladat" << endl; int db = 0; for( int i = 0; i < meret; i++ ) { if( uzenetek[i].szam == "123456789" ) { db++; } } if( db < 2 ) { cout << "nincs elegendo uzenet" << endl; } else { int barino[db]; db = 0; for( int i = 0; i < meret; i++ ) { if( uzenetek[i].szam == "123456789" ) { barino[db] = uzenetek[i].ora*60 + uzenetek[i].perc; db++; } } max = barino[1] - barino[0]; for( int i = 2; i < db; i++ ) { if( barino[i] - barino[i-1] > max ) { max = barino[i] - barino[i-1]; } } cout << max / 60 << ":" << max % 60 << endl; } // 7. feladat cout << endl << "7. feladat" << endl; int meret2 = meret+1; uzenet uzenetek2[meret+1]; for( int i = 0; i < meret; i++ ) { uzenetek2[i] = uzenetek[i]; } cout << "Ora: "; cin >> uzenetek2[meret2-1].ora; cout << "Perc: "; cin >> uzenetek2[meret2-1].perc; cout << "Telefonszam: "; cin >> uzenetek2[meret2-1].szam; cin.get(); cout << "Uzenet: "; getline(cin, uzenetek2[meret2-1].uzenet); uzenetek2[meret2-1].hossz = uzenetek2[meret2-1].uzenet.length(); for( int i = 0; i < meret2; i++ ) { cout << uzenetek2[i].toString(); } // 8. feladat cout << endl << "8. feladat" << endl; ofstream output("smski.txt"); for( int i = 0; i < meret2-1; i++ ) { for( int j = i+1; j < meret2; j++ ) { if( uzenetek2[i].szam > uzenetek2[j].szam ) { uzenet csere = uzenetek2[i]; uzenetek2[i] = uzenetek2[j]; uzenetek2[j] = csere; } } } string elozo = ""; for( int i = 0; i < meret2; i++ ) { if( uzenetek2[i].szam != elozo ) { output << uzenetek2[i].szam << endl; elozo = uzenetek2[i].szam; } output << uzenetek2[i].ora << " " << uzenetek2[i].perc << " " << uzenetek2[i].uzenet << endl; } return 0; }
Ha hibát találsz benne, kérlek jelezd!
A feladatot nem sikerült helyesen linkelni. Valami focival kapcsolatos feladatleírás van ott.
Köszönöm, elvileg javítottam.