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;
};