Orar semigroup #2

Orar semigroup #2

10 februarie - zaruri

2 copii se joaca un joc cu zarul. Fiecare face cate n aruncari. Aruncarile fiecarei fete se memoreaza in cate un tablou.
A) Sa se afiseze cele 2 tablouri
B) Castiga cel care a acumulat mai multe puncte. Sa se afiseze castigatorul.
C) Sa se afiseze, pentru fiecare jucator, numarul maxim de aruncari consecutive ale unei fete x.
de exemplu, daca ne intereseaza fata 5 si un jucator arunca 3 5 5 6 5 5 5 7 5, numarul cautat este 3.

Indicatii:

  1. Se va folosi functia rand() care genereaza numere aleatoare intre 0 si RAND_MAX.
  2. La inceputul programului se va face urmatorul apel: srand(time(NULL));
se va scrie o functie care genereaza numere aleatoare intre 1 si x, cu x parametru
#include<iostream>
using namespace std;
int randx(int x)
{return rand()%x+1;
}
void aruncari(int a[],int n)
{ int i;
for(i=0;i<n;i++)
a[i]=randx(6);
}
void afisare(int a[],int n)
{ int i;
cout<<"jucatorul a aruncat zarurile: ";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int suma(int a[],int n)
{int s=0,i;
for(i=0;i<n;i++)
s=s+a[i];
return s;
}
void fata(int &x)
{x=rand()%6+1;}
int main()
{ int n,x,a1[200],a2[200],s1,s2,max,v[100]={0},t[100]={0},j,k,r,p,i;
cout<<"Nr de aruncari:";
cin>>n;
srand(time(NULL));
aruncari(a1,n);
aruncari(a2,n);
afisare(a1,n);
afisare(a2,n);
s1=suma(a1,n);
s2=suma(a2,n);
if(s1>s2)
cout<<"primul castiga";
else if(s2>s1) cout<<"castiga al doilea";
else cout<<"egalitate";
fata(x);
cout<<endl<<"x="<<x<<endl;

max=0;j=0;
for(i=0;i<=n;i++)
{ if(a1[i]==x)
max++;
if(a1[i]!=x)
{v[j]=max;
j++;
max=0;}
}
p=0;
for(k=0;k<=j;k++)
if(v[k]>p)
p=v[k];
cout<<p<<" aparitii consecutive ale fetei "<<x<<" pentu primul jucator"<<endl;

max=0;j=0;
for(i=0;i<=n;i++)
{ if(a2[i]==x)
max++;
if(a2[i]!=x)
{t[j]=max;
j++;
max=0;}
}
p=0;
for(k=0;k<=j;k++)
if(t[k]>p)
p=t[k];
cout<<p<<" aparitii consecutive ale fetei "<<x<<" pentu al doilea jucator"<<endl;
}

miercuri, 9 februarie 2011 by DlMuresan
Categories: , , , , , | Leave a comment

Leave a Reply