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> #include <cstdlib> #include <ctime> using namespace std; class igeny { public: int ora; int perc; int mperc; int csapat; int honnan; int hova; string toString() { stringstream ss; ss << "Ora: " << ora << ", perc: " << perc << ", mperc: " << mperc << ", csapat: " << csapat << ", honnan: " << honnan << ", hova: " << hova << endl; return ss.str(); } }; int main() { // 1. feladat ifstream input("igeny.txt"); int maxszint; int csapatszam; int meret; input >> maxszint; input >> csapatszam; input >> meret; igeny igenyek[meret]; for( int i = 0; i < meret; i++ ) { input >> igenyek[i].ora >> igenyek[i].perc >> igenyek[i].mperc >> igenyek[i].csapat >> igenyek[i].honnan >> igenyek[i].hova; // cout << igenyek[i].toString(); } input.close(); // 2. feladat cout << endl << "2. feladat" << endl; cout << "Kerem a lift indulasi helyet! "; int start; cin >> start; // 3. feladat cout << endl << "3. feladat" << endl; cout << "A lift a " << igenyek[meret-1].hova << " szinten all az utolso igeny teljesitese " "utan." << endl; // 4. feladat cout << endl << "4. feladat" << endl; int min = start; int max = start; for( int i = 0; i < meret; i++ ) { if( igenyek[i].honnan < min ) { min = igenyek[i].honnan; } if( igenyek[i].hova < min ) { min = igenyek[i].hova; } if( igenyek[i].honnan > max ) { max = igenyek[i].honnan; } if( igenyek[i].hova > max ) { max = igenyek[i].hova; } } cout << "A legalacsonyabb erintett emelet: " << min << endl << "A legmagasabb erintett emelet: "<< max << endl; // 5. feladat cout << endl << "5. feladat" << endl; int utassal = 0; int nelkul = 0; for( int i = 0; i < meret; i++ ) { if( igenyek[i].honnan < igenyek[i].hova ) { utassal++; } } cout << "Utassal " << utassal << " alkalommal kellett " "felfele indulni a liftnek" << endl; for( int i = 1; i < meret; i++ ) { if( igenyek[i].honnan > igenyek[i-1].hova ) { nelkul++; } } // ha a kezdo pozicio alacsonyabban van, mint az elso igeny // kezdo emelete, akkor is utas nelkul haladt if( start < igenyek[0].honnan ) { nelkul++; } cout << "Utas nelkul " << nelkul << " alkalommal " "kellett felfele indulni a liftnek" << endl; // 6. feladat cout << endl << "6. feladat" << endl; int csapatdb[csapatszam+1] = {0}; for( int i = 0; i < meret; i++ ) { csapatdb[igenyek[i].csapat]++; } for( int i = 1; i < csapatszam+1; i++ ) { if( csapatdb[i] == 0 ) { cout << i << " "; } } cout << endl; // 7. feladat cout << endl << "7. feladat" << endl; srand(time(0)); // [1;csapatszam] intervallum int vetcsapat = rand() % csapatszam + 1; // cout << "vetcsapat: " << vetcsapat << endl; int vetdb = 0; for( int i = 0; i < meret; i++ ) { if( igenyek[i].csapat == vetcsapat ) { vetdb++; } } igeny vetigenyek[vetdb]; int hely = 0; for( int i = 0; i < meret; i++ ) { if( igenyek[i].csapat == vetcsapat ) { vetigenyek[hely] = igenyek[i]; cout << vetigenyek[hely].toString(); hely++; } } bool vetett = false; for( int i = 1; i < vetdb; i++ ) { if( vetigenyek[i].honnan != vetigenyek[i-1].hova ) { vetett = true; cout << vetigenyek[i-1].hova << " - " << vetigenyek[i].honnan << endl; } } if( !vetett ) { cout << "Nem bizonyithato szabalytalansag." << endl; } // 8. feladat cout << endl << "8. feladat" << endl; stringstream ss; int fkod; string s; for( int i = 0; i < vetdb; i++ ) { ss << "Befejezes ideje: " << vetigenyek[i].ora << ":" << vetigenyek[i].perc << ":" << vetigenyek[i].mperc << endl; ss << "Sikeresseg: "; cout << "Sikeres volt a feladat (i/n): "; cin >> s; if( s == "i" ) { ss << "befejezett"; } else { ss << "befejezetlen"; } ss << endl << "-----" << endl; ss << "Indulasi emelet: " << vetigenyek[i].honnan << endl; ss << "Celemelet: " << vetigenyek[i].hova << endl; ss << "Feladatkod: "; cout << "Kerem a feladatkodot: "; cin >> fkod; ss << fkod << endl; } // cout << ss.str(); ofstream output("blokkol.txt"); output << ss.str(); return 0; }