programozas
  • Zsoldos
    #143
    Nullaztad a valtozokat, mielott megkezdted az osszegzest? Ha nem adsz konkret kezdeti erteket, az a szemet van bennuk csak, ami a memoriaban volt azon a cimen..

    Itt septiben takolt megoldas. Amugy ne hasznalj ilyen sok kis tombot szerintem, mert elegge belebonyolit a dolgokba. 5 jatekosod van, tehat 5 adatot kell tarolni, 1 tomb eleg. Aztan eldontod egy jatekosnal mit akarsz tarolni, es igy szepen lepesenkent egyre komplexebb szerkezetet hozhatsz letre. Igy csokkented a bonyolultsagot, bovitheto lesz a programod stb.

    #include <iostream>
    #include <string>
    using namespace std;

    //1 resztvevo adatainak tarolasa es bekerese
    struct jatekos
    { string nev;
    int dobasok[10];
    int dobasosszeg;

    void adatbekeres();
    };

    void jatekos::adatbekeres()
    { int temp;
    cout << "Kerem a versenyzo nevet: ";
    cin >> nev;
    dobasosszeg=0;
    for(int i=0; i<10; i++)
    { cout << "Kerem az " << i+1 << ". dobasanak eredmenyet: ";
    cin >> temp;
    dobasok[i]=temp;
    dobasosszeg+=temp;
    }
    }

    //a jatek osszes resztvevojenek adatbekerese, sorfizetesi kotelezettseg megallapitasa, eredmenyhirdetes
    void feltolt(jatekos *j, int versenyzoszam)
    { for(int i=0; i<versenyzoszam; i++) j[i].adatbekeres();
    }

    int enhanysortfizessek(jatekos *j, int versenyzoszam, int aktversenyzo)
    { int count=0;
    for(int i=0; i<versenyzoszam; i++)
    { if(j[i].dobasosszeg>j[aktversenyzo].dobasosszeg) count++;
    }
    return count;
    }

    void eredmenyhirdetes(jatekos *j, int versenyzoszam)
    { for(int i=0; i<versenyzoszam; i++)
    cout << j[i].nev << " nevu jatekos dobasa: " << j[i].dobasosszeg << ". Fizetett sorok szama: " << enhanysortfizessek(j, versenyzoszam, i) << endl;
    }


    int main()
    {
    //jatek elinditasa 5 fo reszere, es az eredmeny
    jatekos jatekosok[5];
    feltolt(jatekosok, 5);
    eredmenyhirdetes(jatekosok, 5);

    //gombnyomas kilepeshez
    char pause; cin >> pause;
    return 0;
    };