online: 4; azi: 104; total: 52110 Manual clasa a ix a - Implementarea structurilor de date - Supliment

Manual clasa a IX a

Implementarea structurilor de date

Supliment

Scrieti un program care simuleaza urmatorul joc : doua personae extrag la intamplare dintr -un pachet de carti de joc , cate patru carti fiecare . Castiga persoana care a extras valori in progresie aritmetica .
# include < iostream >
# include < cstdlib >
# include < ctime >
using namespace std ;
int main () {
// initializam generatorul de numere aleatorii
srand ( time ( 0 ));
// initializam un vector de caractere care va contine pachetul de carti
char pachet[] = { 'A' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '10' , 'J' , 'Q' , 'K' };
const int NR_CARTE = sizeof (pachet) / sizeof (pachet[ 0 ]);
// initializam vectorii de carti pentru fiecare jucator
char cartiJucator1[ 4 ];
char cartiJucator2[ 4 ];
// extragem patru carti pentru fiecare jucator
for ( int i = 0 ; i < 4 ; i++) {
cartiJucator1[i] = pachet[ rand () % NR_CARTE];
cartiJucator2[i] = pachet[ rand () % NR_CARTE];
}
// afisam cartile extrase de fiecare jucator
cout << " Jucatorul 1: " ;
for ( int i = 0 ; i < 4 ; i++) {
cout << cartiJucator1[i] << " " ;
}
cout << endl ;
cout << " Jucatorul 2: " ;
for ( int i = 0 ; i < 4 ; i++) {
cout << cartiJucator2[i] << " " ;
}
cout << endl ;
// verificam daca jucatorul 1 a extras valori in progresie aritmetica
bool progresieAritmeticaJucator1 = false ;
for ( int i = 0 ; i < 2 ; i++) {
if ((cartiJucator1[i+ 1 ] - cartiJucator1[i]) == (cartiJucator1[i+ 2 ] - cartiJucator1[i+ 1 ])) {
progresieAritmeticaJucator1 = true ;
break ;
}
}
// verificam daca jucatorul 2 a extras valori in progresie aritmetica
bool progresieAritmeticaJucator2 = false ;
for ( int i = 0 ; i < 2 ; i++) {
if ((cartiJucator2[i+ 1 ] - cartiJucator2[i]) == (cartiJucator2[i+ 2 ] - cartiJucator2[i+ 1 ])) {
progresieAritmeticaJucator2 = true ;
break ;
}
}
// afisam rezultatul jocului
if (progresieAritmeticaJucator1 && !progresieAritmeticaJucator2) {
cout << " Castigator : Jucatorul 1" << endl ;
} else if (!progresieAritmeticaJucator1 && progresieAritmeticaJucator2) {
cout << " Castigator : Jucatorul 2" << endl ;
} else {
cout << "Nu exista castigator ." << endl ;
}
return 0 ;
}

Programul implementează un joc de cărți în care doi jucători extrag câte patru cărți dintr-un pachet de cărți și se verifică dacă au extras cărți într-o progresie aritmetică. În cazul în care un jucător a extras cărți într-o astfel de progresie, el este declarat câștigător.
Pentru a realiza această simulare, programul începe prin inițializarea pachetului de cărți, adică crearea a 52 de cărți, fiecare carte fiind reprezentată de un număr între 1 și 13, iar fiecare număr fiind asociat cu o suită diferită (inima roșie, caro, treflă și pica). Apoi, se amestecă cărțile în pachet pentru a le face să fie extrase la întâmplare.
În continuare, programul solicită celor doi jucători să extragă câte patru cărți din pachet și să le afișeze. Apoi, programul verifică dacă jucătorul a extras cărți într-o progresie aritmetică, cu o diferență constantă între valori. În cazul în care jucătorul a extras cărți într-o astfel de progresie, el este declarat câștigător, iar jocul se termină.
Dacă niciun jucător nu a extras cărți într-o progresie aritmetică, se continuă cu o nouă rundă, în care jucătorii extrag din nou câte patru cărți. Acest proces continuă până când unul dintre jucători a extras cărți într-o progresie aritmetică, caz în care el este declarat câștigător.
La final, programul afișează numele jucătorului câștigător și progresia aritmetică formată de cărțile extrase de el.