Orar semigroup #2

Orar semigroup #2

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

Leave a Reply