A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le. Az innen letölthető tömörített állományokban megtalálod a Code::Blocks-ban megnyitható projectet, és a feladat a forrásait. A kicsomagoláshoz a 7zip nevű ingyenes programot javaslom.
A feladat megoldása az esetleges központi megoldások logikájától eltérhet. Véleményem szerint nem a trükkös megoldások azok, amelyeket hamarabb kitalál az ember, hanem a több lépésben, de elemi algoritmusok használatával készített megoldás az, amely sok esetben sokkal hamarabb elkészül.
Jöjjön akkor a forráskód:
#include <iostream> #include <fstream> #include <sstream> using namespace std; int kerekit(int ar) { int marad; marad = ar % 10; if( marad == 1 || marad == 6 ) { ar = ar-1; } else if( marad == 2 || marad == 7 ) { ar = ar-2; } else if( marad == 3 || marad == 8 ) { ar = ar+2; } else if( marad == 4 || marad == 9 ) { ar = ar+1; } return ar; } class jegy { public: int hely; int kezd; int veg; int sorszam; int tav; int ar; string toString() { stringstream ss; ss << hely << " " << kezd << " " << veg << " " << sorszam << " " << tav << " " << ar << endl; return ss.str(); } }; int main() { // 1. feladat ifstream input("eladott.txt"); int meret; int hossz; int ar10; input >> meret >> hossz >> ar10; jegy jegyek[meret]; for( int i = 0; i < meret; i++ ) { input >> jegyek[i].hely >> jegyek[i].kezd >> jegyek[i].veg; jegyek[i].sorszam = i+1; jegyek[i].tav = jegyek[i].veg - jegyek[i].kezd; // cout << jegyek[i].toString() << endl; } input.close(); // 2. feladat cout << endl << "2. feladat" << endl; cout << jegyek[meret-1].hely << " " << jegyek[meret-1].tav << endl; // 3. feladat cout << endl << "3. feladat" << endl; for( int i = 0; i < meret; i++ ) { if( jegyek[i].tav == hossz ) { cout << jegyek[i].sorszam << " "; } } cout << endl; // 4. feladat cout << endl << "4. feladat" << endl; int ar; int km10; int osszeg = 0; for( int i = 0; i < meret; i++ ) { km10 = jegyek[i].tav/10; if( jegyek[i].tav % 10 > 0 ) { km10++; } ar = kerekit(km10*ar10); jegyek[i].ar = ar; osszeg += jegyek[i].ar; } cout << "A tarsasag jegybevetele: " << osszeg << " Ft" << endl; // 5. feladat cout << endl << "5. feladat" << endl; int max = 0; for( int i = 0; i < meret; i++ ) { if( jegyek[i].kezd > max ) { max = jegyek[i].kezd; } if( jegyek[i].veg > max && jegyek[i].veg != hossz ) { max = jegyek[i].veg; } } cout << max << endl; int le = 0; int fel = 0; for( int i = 0; i < meret; i++ ) { if( jegyek[i].kezd == max ) { fel++; } if( jegyek[i].veg == max ) { le++; } } cout << "fel: " << fel << " le: " << le << endl; // 6. feladat cout << endl << "6. feladat" << endl; int tomb2[hossz+1]; for( int i = 0; i < hossz+1; i++ ) { tomb2[i] = 0; } for( int i = 0; i < meret; i++ ) { tomb2[jegyek[i].kezd]++; tomb2[jegyek[i].veg]++; } int db = 0; for( int i = 0; i < hossz+1; i++ ) { if( tomb2[i] > 0 ) { db++; } } cout << db << endl; // 7. feladat cout << endl << "7. feladat" << endl; cout << "Adja meg, az ut melyik kilometeren keri az utaslistat! "; int km; cin >> km; int ulesek[49] = {0}; for( int i = 0; i < meret; i++ ) { if( jegyek[i].kezd <= km && jegyek[i].veg > km) { ulesek[jegyek[i].hely] = jegyek[i].sorszam; } } ofstream output("kihol.txt"); for( int i = 1; i < 49; i++ ) { if( ulesek[i] == 0 ) { output << i << ". ules: ures" << endl; } else { output << i << ". ules: " << ulesek[i] << ". utas" << endl; } } return 0; }