Orar semigroup #2

Orar semigroup #2

Se afișează postările cu eticheta zaruri. Afișați toate postările

11 februarie - zaruri + tema/14

1. Din nou zaruri. Doi copii se joaca iar. Fiecare arunca, pana da 6. Castiga cel care a aruncat toate fetele. Daca ambii au aruncat toate fetele, castiga cel care are suma zarurilor mai mare. Daca sumele sunt egale,castiga cel care a aruncat de mai putine ori. Daca au aruncat de acelasi numar, e egalitate. Care castiga?
Se va scrie o functie pentru aruncarile unui copil. 

 #include <iostream>
using namespace std;
int randx(int x){
return rand()%x+1;}

void aruncare(int &s, int &nr, int &ok){
int ar[7]={0},x,i;
s=0; nr=1;
x=randx(6);
cout<<"aruncarile: "<<x;
ar[x]++;
s=s+x;
ok=1;
while(x!=6){
x=randx(6);
cout<<x;
s=s+x;
nr++;
ar[x]++;}
for(i=1;i<7;i++)
if(ar[i]==0) ok=0;
cout<<endl;}

int main(){
int s1,s2,nr1,nr2,ok1,ok2;
srand(time(NULL));
aruncare(s1,nr1,ok1);
aruncare(s2,nr2,ok2);
if(ok1==0 && ok2==0) cout<<endl<<"nu castiga nici unu";
else if(ok1==1 && ok2==0) cout<<endl<<"primul castiga (a aruncat toate fetele)";
else if(ok1==0 && ok2==1) cout<<endl<<"al 2-lea castiga (a aruncat toate fetele)";
else if(ok1==1 && ok2==1 && s1>s2) cout<<endl<<"primul castiga(are suma mai mare)";
else if(ok1==1 && ok2==1 && s1<s2) cout<<endl<<"al 2-lea castiga(are suma mai mare)";
else if(ok1==0 && ok2==1) cout<<endl<<"al 2-lea castiga (a aruncat toate fetele)";
else if(nr2>nr1) cout<<endl<<"primul castiga(a dat de mai putine ori)";
else if(nr2<nr1) cout<<endl<<"al 2-lea castiga(a dat de mai putine ori)";
else if(nr1==nr2)cout<<endl<<"sunt la egalitate";
cout<<endl;
}
2. Sa se implementeze urmatoarele functii:
-functie care numara vocalele dintr-un sir de caractere
-functie care verifica daca un sir de caractere e palindrom
-functie care returneaza suma tuturor cifrelor care apar intr-un sir de caractere

Sa se apeleze toate functiile de mai sus, pentru fiecare linie a unui fisier text.

#include<iostream>
#include<fstream>
using namespace std;
int voc(char a[])
{int i,p=0;
for(i=0;i<strlen(a);i++)
    if(strchr("AEIOUaeiou",a[i]))
        p++;
return p;
}

char* pal(char a[])
{char b[100];
int i,j;
j=0;
for(i=strlen(a)-1;i>=0;i--)
    {b[j]=a[i];j++;}
if(strcmp(a,b)==0)
    return "DA";
else return "NU";
}

int suma(char a[])
{int s=0,i;
for(i=0;i<strlen(a);i++)
    if(isdigit(a[i]))
        s=s+a[i]-'0';
return s;
}

int main()
{srand(time(NULL));
char a[100],c;
ifstream f("dorel");
while(f.get(a,100))
{
    cout<<voc(a)<<" "<<pal(a)<<" "<<suma(a)<<endl;
    f>>c;
    f.putback(c);
}
}
fişierul
Dorel are 4 ani si jumatate
iar peste 23 de zile va avea
141 de mere si 2 pere rosii
dar totul ii va parea ca
si la inceput.Lc,1-4
3. Dorel şi Mirel au la dispoziţie 3 zaruri de mase şi volume egale. O rundă are 3 aruncări consecutive a zarurilor de către un jucător. Să se scrie o funcţie pentru o rundă de aruncări. Fiecare joacă atâtea runde până când suma numerelor de pe feţele primelor două aruncări se împarte exact la numărul de pe faţa ce a ieşit la a 3-a aruncare. Câştigă cel care reuşeşte să termine jocul mai repede. În caz de egalitate după acest procedeu se va mai apela o dată funcţia scrisă pentru o rundă de 3 aruncări şi va câştiga cel care aruncă cea mai mare sumă de numere inscripţionate pe faţa fiecărui zar.

Se va folosi funcţia rand() pentru generarea de numere ce reprezintă feţele zarului şi se va face apelul srand(time(NULL)) la începutul funcţiei int main().

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

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