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; // adattároló osztály class futar { public: int nap; int sorszam; int km; int penz; string toString() { stringstream ss; ss << nap << " " << sorszam << " " << km<< " " << penz << endl; return ss.str(); } }; // mennyi km mennyi pénzt jelent int getpenz( int km ) { int penz = 0; if( km <= 2 ) { penz = 500; } else if( km <= 5 ) { penz = 700; } else if( km <= 10 ) { penz = 900; } else if( km <= 20 ) { penz = 1400; } else if( km <= 30 ) { penz = 2000; } // nincs else ág, nem megfelelő értékek esetén 0 lesz. return penz; } int main() { ifstream input("tavok.txt"); int meret = 0; string sor; // sorok megszámolása while( getline(input,sor) ) { meret++; } futar fuvarok[meret]; // fájl elejére visszaállás input.clear(); input.seekg(0); // beolvasás for( int i = 0; i < meret; i++ ) { input >> fuvarok[i].nap >> fuvarok[i].sorszam >> fuvarok[i].km; // a pénz változót később vezettem be, de utólag a beolvasáskor beállítok // egy nem valódi értéket fuvarok[i].penz = -1; } // rendezés for( int i = 0; i < meret-1; i++ ) { for( int j = i+1; j < meret; j++ ) { futar csere; if( fuvarok[i].nap > fuvarok[j].nap || (fuvarok[i].nap == fuvarok[j].nap && fuvarok[i].sorszam > fuvarok[j].sorszam) ) { csere = fuvarok[i]; fuvarok[i] = fuvarok[j]; fuvarok[j] = csere; } } } // rendezett tömb kiírása // az utolsó elemnek még nincs értéke for( int i = 0; i < meret; i++ ) { cout << fuvarok[i].toString(); } cout << endl; // 2. feladat cout << endl << "2. feladat" << endl; cout << fuvarok[0].km << endl; // 3. feladat cout << endl << "3. feladat" << endl; cout << fuvarok[meret-1].km << endl; // 4. feladat cout << endl << "4. feladat" << endl; // egy 8 elemú tömb, ahol az egyes napok // fuvarjainak darabszámát gyűjtöm // a tömb indexei a napok // a tömböt először nullázzuk int darabszam[8] = {0}; // többszörös megszámlálás for( int i = 0; i < meret; i++ ) { // az adott napnak megfelelő indexű elemeket megnöveljük // ezzel megszámoljuk, melyik nap hány fuvar volt darabszam[fuvarok[i].nap]++; } //az első nap adatait nem írom ki, 0. nap nincs for( int i = 1; i <= 7; i++ ) { if( darabszam[i] == 0 ) { cout << i << endl; } } // 5. feladat cout << endl << "5. feladat" << endl; // maximumkeresés a napi darabszámok tömbben int max = 1; // azért 2-től indulok, mert 0. nap nincs, és először // a hétfőt (1) tekintjük a legnagyobbnak, írd a // 2-es naptól (kedd) kell indulni for( int i = 2; i <= 7; i++ ) { if( darabszam[i] > darabszam[max] ) { max = i; } } cout << max << endl; // 6. feladat cout << endl << "6. feladat" << endl; // többszörös összeadás tömbje (1-8), // ahol az indexek a napot jelentik, // és a tömböt nullázzuk int napikm[8] = {0}; // végigmegyünk az utak adatain for( int i = 0; i < meret; i++ ) { // a napikm tömb megfelelő indexű elemeihez összeadjuk // az adott nap km adatait napikm[fuvarok[i].nap] += fuvarok[i].km; } // a megfelelő napok (1-7) adatainak kiírása for( int i = 1; i <= 7; i++ ) { cout << i << ". nap: " << napikm[i] << " km" << endl; } // 7. feladat cout << endl << "7. feladat" << endl; int km; cout << "Irj be egy tavolsagot: "; cin >> km; cout << getpenz(km) << endl; // 8. feladat // eltároljuk, melyik út mennyi pénzt hozott (segédfüggvény) for( int i = 0; i < meret; i++ ) { fuvarok[i].penz = getpenz(fuvarok[i].km); } // kiírás fájlba ofstream output("dijazas.txt"); for( int i = 0; i < meret; i++ ) { output << fuvarok[i].nap << ". nap " << fuvarok[i].sorszam << ". ut: " << fuvarok[i].penz << " Ft" << endl; } output.close(); // 9. feladat cout << endl << "9. feladat" << endl; // összbevétel kiszámítása int szum = 0; for( int i = 0; i < meret; i++ ) { szum += fuvarok[i].penz; } cout << szum << endl; return 0; }
Ha hibát találsz benne, kérlek jelezd!