Documente Academic
Documente Profesional
Documente Cultură
Gurdi Gheorghe
Lucru individual
la disciplina Instrumente software pentru afaceri
STUDIU DE CAZ
Determinarea celor mai bune rezultate
obinute la diferite probe sportive
Chiinu - 2016
Studiu de caz
5. La o competiie sportiv de diferite probe={denumire, data, ora, arena}, au participat
persoane ={nume, prenume, inaltime, greutate, tara} din mai multe ri. Fiecare participant
are greutatea={kilogram, gram} i poate participa numai la una dintre probele sportive
propuse. S se determine cele mai buna rezultate sportive obinute la diferite probe.
Rezultatele sportive pot fi estimate n diferite uniti, cum ar fi {minute, secunde, sutimi}, etc.
Soluie propus:
#include <iostream>
using namespace std;
class Probe{
string denumire;
string data;
string ora;
string arena;
int id;
public:
Probe(){};
Probe(int identificator, char *den, char *d, char *o, char *a)
{id=identificator;
denumire=den;
data=d;
ora=o;
arena=a; }
void initiere(int identificator,char *den, char *d, char *o, char *a)
{ id=identificator;
denumire=den;
data=d;
ora=o;
arena=a;}
void initiere()
{
cout<<"\n\n------ Proba ------";
cout<<"\n Denumire: "; getline(cin, denumire);
cout<<"\n Data: "; getline(cin, data);
cout<<"\n Ora: "; getline(cin, ora);
cout<<"\n Arena: "; getline(cin, arena); }
void afisare()
{
cout<<"\n\n----- Proba -----";
cout<<"\n ID: "<<id;
cout<<"\n Denumire: "<<denumire;
cout<<"\n Data: " <<data;
cout<<"\n Ora: " <<ora;
string nume;
string prenume;
float inaltime;
Greutatea greutate;
string tara;
public:
Persoana(){};
Persoana(char *n, char *p, float inalt, Greutatea greu, char *t)
{
nume=n;
prenume=p;
inaltime=inalt;
greutate=greu;
tara=t; }
void initiere(char *n, char *p, float inalt, Greutatea greu, char *t)
{
nume=n;
prenume=p;
inaltime=inalt;
greutate=greu;
tara=t; }
void initiere()
{
cout<<"\n Detalii participant";
cout<<"\n Nume: ";getline(cin,nume);
cout<<"\n Prenume: ";getline(cin, prenume);
cout<<"\n Inaltime: ";cin>>inaltime;
cout<<"\n Greutate: ";greutate.initiere();
cout<<"\n Tara: ";getline(cin, tara);
}
void afisare()
{
cout<<"\n ---Detalii participant---";
cout<<"\n Nume: "<<nume;
cout<<"\n Prenume: "<<prenume;
cout<<"\n Inaltime: "<<inaltime;
cout<<"\n Greutate: ";greutate.afisare();
cout<<"\n Tara: "<<tara;
cout<<"\n";}
Persoana(Persoana &p)
{
nume=p.nume;
prenume=p.prenume;
inaltime=p.inaltime;
greutate=p.greutate;
tara=p.tara; }
int operator ==(Persoana p)
{
if((nume==p.nume)&&(prenume==p.prenume)&&(inaltime==p.inaltime)&&(greutate==p.gr
eutate)&&(tara==p.tara)) return 1;
else return 0;}};
class Rezultate{
int minute;
int secunde;
int sutimi;
public:
Rezultate(){};
Rezultate(int m, int sec, int sut)
{
minute=m;
secunde=sec;
sutimi=sut;}
void initiere(int m, int sec, int sut)
{
minute=m;
secunde=sec;
sutimi=sut;}
void initiere()
{
cout<<"\n ---Rezultatele probei---";
cout<<"\n Minute: ";cin>>minute;
cout<<"\n Secunde: ";cin>>secunde;
cout<<"\n Sutimi: ";cin>>sutimi;
}
void afisare() {
cout<<"\n ---Rezultatele probei---";
cout<<"\n Minute: "<<minute;
cout<<"\n Secunde: "<<secunde;
cout<<"\n Sutimi: "<<sutimi;
cout<<"\n";}
Rezultate(Rezultate &r)
{
minute=r.minute;
secunde=r.secunde;
sutimi=r.sutimi; }
int get_minute()
{return minute;}
int get_secunde()
{return secunde; }
int get_sutimi()
{return sutimi; }};
class Panou_rezultate{
Probe pr;
Persoana pers;
Rezultate rezult;
public:
Panou_rezultate(){};
Panou_rezultate(Probe p, Persoana per, Rezultate rez)
{pr=p;
pers=per;
rezult=rez; }
void initiere(Probe p, Persoana per, Rezultate rez)
{ pr=p;
pers=per;
rezult=rez; }
void initiere(){
pr.initiere();
pers.initiere();
rezult.initiere(); }
void afisare()
{ pr.afisare();
pers.afisare();
rezult.afisare(); }
int participat(Persoana p)
{ if(pers==p) return 1;
else return 0; }
Rezultate get_rezultat(){
return rezult;}
Probe get_proba()
{ return pr; }} ;
int main()
{
Probe pr[100];
pr[0].initiere(0,"100 m","08.12.2016","10.00","Stadionul Dinamo");
pr[1].initiere(1,"200 m","08.12.2016","10.15","Stadionul Dinamo");
pr[2].initiere(2,"400 m","08.12.2016","10.35","Stadionul Dinamo");
pr[3].initiere(3,"800 m","08.12.2016","11.00","Stadionul Dinamo");
pr[4].initiere(4,"1500 m","08.12.2016","11.30","Stadionul Dinamo");
pr[5].initiere(5,"5000 m","08.12.2016","12.00","Stadionul Dinamo");
rez[6].initiere(1,40,50);
rez[7].initiere(1,41,18);
rez[8].initiere(3,26,12);
rez[9].initiere(3,29,58);
rez[10].initiere(13,43,13);
rez[11].initiere(13,44,41);
rez[12].initiere(26,17,53);
rez[13].initiere(26,18,18);
int irez=13;
Panou_rezultate panou[100];
panou[0].initiere(pr[0],pers[0],rez[0]);
panou[1].initiere(pr[0],pers[1],rez[1]);
panou[2].initiere(pr[1],pers[2],rez[2]);
panou[3].initiere(pr[1],pers[3],rez[3]);
panou[4].initiere(pr[2],pers[4],rez[4]);
panou[5].initiere(pr[2],pers[5],rez[5]);
panou[6].initiere(pr[3],pers[6],rez[6]);
panou[7].initiere(pr[3],pers[7],rez[7]);
panou[8].initiere(pr[4],pers[8],rez[8]);
panou[9].initiere(pr[4],pers[9],rez[9]);
panou[10].initiere(pr[5],pers[10],rez[10]);
panou[11].initiere(pr[5],pers[11],rez[11]);
panou[12].initiere(pr[6],pers[12],rez[12]);
panou[13].initiere(pr[6],pers[13],rez[13]);
int ipanou=14;
int i,j,k;
Rezultate minim;
int nrpr, nrpers, nrrez, op, eoj;
for(eoj=1;eoj;)
{
//meniul de afisare
cout<<"-------MENIU-------\n";
cout<<"1 - Inregistrarea probei \n";
cout<<"2 - Inregistrarea persoanei participante \n";
cout<<"3 - Inregistrarea greutatii persoanei \n";
cout<<"4 - Inregistrarea rezultatului probei \n";
cout<<"5 - Inregistrarea rezultatului pentru panou \n";
cout<<"6 - Afisarea probelor \n";
cout<<"7 - Afisarea persoanelor participante \n";
cout<<"8 - Afisarea rezultatelor \n";
cout<<"9 - Afisarea celor mai bune rezultate \n";
cout<<"0 - Iesire \n";
cout<<"\nSelecteaza un numar din meniu \n";
cin>>op;
cin.ignore();
bool a_participat=false;
switch(op)
{case 0:
return 0;//iesirea
case 1:
pr[ipr].initiere();
ipr++;
break;
case 2:
pers[ipers].initiere();
ipers++;
break;
case 3:
greu[igreu].initiere();
igreu++;
break;
case 4:
rez[irez].initiere();
irez++;
break;
case 5: cout<<"\n Numar proba: ";
cin>>nrpr;
cin.ignore();
cout<<"\n Numar participant: ";
cin>>nrpers;
cin.ignore();
cout<<"\n Numar rezultat: ";
cin>>nrrez;
cin.ignore();
for(i=0;i<ipers;i++)
for (j=0; j<ipanou;j++)
if(panou[j].participat(pers[i]))
a_participat=true;
if(a_participat)
cout<<"\n Persoana data a participat deja la o proba\n ";
else
panou[++ipanou].initiere(pr[nrpr],pers[nrpers],rez[nrrez]);
break;
case 6: for(i=0;i<ipr;i++)
pr[i].afisare();
break;
case 7: for(i=0;i<ipers;i++)
pers[i].afisare();
break;
case 8: for(i=0;i<ipanou;i++)
panou[i].afisare();
break;
case 9: for(i=0;i<ipr;i++)
{
Rezultate min;
min.initiere(1000,0,0);
for(j=0;j<ipanou;j++)
{
if(panou[j].get_proba().get_id()==i)
if(panou[j].get_rezultat().get_minute()<min.get_minute())
min=panou[j].get_rezultat();
else
if((panou[j].get_rezultat().get_minute()==min.get_minute())&&(panou[j].get_rezultat().get_s
ecunde()<min.get_secunde()))
min=panou[j].get_rezultat();
else
if((panou[j].get_rezultat().get_minute()==min.get_minute())&&(panou[j].get_rezultat().get_s
ecunde()==min.get_secunde())&&(panou[j].get_rezultat().get_sutimi()<min.get_sutimi()))
min=panou[j].get_rezultat();
}
cout<<"Pentru proba "<<i<<" cel mai bun rezultat este: ";
min.afisare();
}
break;
default:
cout<<"\n Operatie incorecta\n";
break;
}
}
return 0;
}