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

7 februarie: Aplicatie Fizica

Cu ce forta trebuie sa tragi un corp ca sa marga cu viteza constanta?
Se citesc unghiul de inclinare al planului, masa corpului si coeficientul de frecare.

#include<iostream>
#include<math.h>
using namespace std;
void frecare(double &Ff, double m, double u, double a)
{double Gy,Gx;
Gy=cos(a)*m*10;
Gx=sin(a)*m*10;
Ff=u*Gy;
Ff=Ff+Gx;}

int main()
{double Ff,m,u,a;
    cout<<"Unghiul in grade";
    cin>>a;
    cout<<"Masa";
    cin>>m;
    cout<<"Coef";
    cin>>u;
a=3.14*a/180;
frecare(Ff,m,u,a);
cout<<Ff+m*10*sin(a);
}

luni, 7 februarie 2011 by DlMuresan
Categories: , , | Leave a comment

Combinări

Subprogram pentru combinări

#include<iostream>
using namespace std;
int comb(int n, int k)
{int i,a=1,b=1,c=1;
for(i=1;i<=n;i++)
    a=a*i;
for(i=1;i<=k;i++)
    b=b*i;
for(i=1;i<=n-k;i++)
    c=c*i;
return a/(b*c);
}

int main()
{int n,k;
cout<<"Combinari de ";cin>>n;
cout<<"Luate cate ";cin>>k;
cout<<comb(n,k);
}

marți, 25 ianuarie 2011 by DlMuresan
Categories: , | Leave a comment

14 ianuarie - Fisa de lucru 4 - FULL CORECT


Se citeste de la tastatura un vector cu n numere intregi.
Sa se realizeze subprograme pentru realizarea urmatoarelor cerinte:
1)      Afisarea vectorului
2)      Calcularea sumei valorilor vectorului
3)      Afisarea numarului de valori prime din vector
4)      Afisarea numarului de elemente palindroame din vector (1234321 este palindrom)
5)      Afisarea urmatorului triunghi cu valorile din tablou:
a[0] a[1] a[2]........ .............a[n-1] 
            a[0] a[1] a[2]........ ......a[n-2]
            a[0] a[1] a[2]........ ...a[n-3] 
            .....
a[0] a[1]
a[0]
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
void afisare(int n, int a[100])
{int i;
for(i=0;i<n;i++)
    cout<<a[i]<<" ";
}

int suma(int n, int a[100])
{int s=0,i;
for(i=0;i<n;i++)
    s=s+a[i];
return s;
}

int prime(int n, int a[100])
{int d,ok=1,s=0,i;
for(i=0;i<n;i++)
{    ok=1;
    for(d=2;d<=a[i]/2;d++)
        if(a[i]%d==0)
            ok=0;
    if(a[i]==1)ok=0;
    if(a[i]==2 || a[i]==3)ok=1;
    if(ok==1)s++;
}
return s;
}

int palindrom(int n, int a[100])
{int t,r,d,ok=1,s=0,i;
for(i=0;i<n;i++)
{    ok=1;r=0;
    t=a[i];
    while(t)
    {r=r*10+t%10;
    t=t/10;}
    if(a[i]!=r)
        ok=0;
    if(ok==1)
        s++;
}
return s;
}

void triunghi(int n, int a[100])
{int i,j;
j=n;
while(j>0)
{for(i=0;i<j;i++)
    cout<<a[i]<<" ";
cout<<endl;
j--;
}
}

int main()
{int i,n,a[100];
cout<<"Numarul de elemente ale vectorului este:"<<endl;
cin>>n;
cout<<"Cititi elementele vectorului"<<endl;
for(i=0;i<n;i++)
    cin>>a[i];
cout<<endl<<"<<Afisare>>"<<endl;
afisare(n,a);
cout<<endl<<endl<<"<<Suma valorilor vectorului>>"<<endl;
cout<<suma(n,a)<<endl<<endl;
cout<<"<<Numarul de elemente prime>>"<<endl;
cout<<prime(n,a)<<endl<<endl;
cout<<"<<Numarul de elemente palindrom>>"<<endl;
cout<<palindrom(n,a)<<endl<<endl;
cout<<"<<TRIUNGHIUL BERMUDELOR>>"<<endl;
triunghi(n,a);
}

luni, 24 ianuarie 2011 by DlMuresan
Categories: , , , , , | 1 comment

12 ianuarie - Fisa de lucru 3

1. Sa se scrie un subprogram care returneaza cel mai mare divizor comun a doua numere naturale.

            A  Sa se determine cmmdc pt n valori memorate intr-un  tablou.
B  Pentru n valori citite sa se determine perechile de numere prime intre ele
#include<iostream>
#include<math.h>
using namespace std;
int cmmdc(int a, int b)
{int c;
while(b)
{c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{int a[100],c[100],i,j=0,k,r=0,p,n;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
    cin>>a[i];
for(i=0;i<n;i++)
    for(r=i+1;r<n;r++)
{    c[j]=cmmdc(a[i],a[r]);
    j++;
}
p=c[0];
for(k=0;k<j;k++)
    if(c[k]<p)p=c[k];
cout<<endl<<"CMMDC "<<p;
cout<<endl<<endl<<"Prime intre ele"<<endl<<endl;
for(i=0;i<n;i++)
    for(r=i+1;r<n;r++)
        if(cmmdc(a[i],a[r])==1)
            cout<<a[i]<<";"<<a[r]<<endl;
}
2. Scrieţi o funcţie găseşte_cifra care returnează valoarea cifrei aflate pe poziţia k în  numărul n, începând de la dreapta (n şi k vor fi argumentele funcţiei).
#include<iostream>
#include<math.h>
using namespace std;
int find_za_number(int n, int k)
{int i=1;
while(n!=0 && i!=k)
{    n=n/10;
i++;}
if(n!=0)
    return n%10;
else return 10;
}
int main()
{int n,k;
cout<<"n=";cin>>n;
cout<<"k=";cin>>k;
if(find_za_number(n,k)<10)cout<<find_za_number(n,k);
else cout<<"Nu fii jmecher si nu da un k mai mare decat numaru de cifre ale numarului"<<endl;
}
3. Sa se afiseze  numere toate numerele prime din intervalul [a,b]. Se va folosi o functie care verifica daca un numar este prim. 
#include<iostream>
#include<math.h>
using namespace std;
int prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
    if(n%d==0)
        ok=0;
if(ok==1)
    return ok;
else return 0;
}
int main()
{int a,b,n;
cin>>a>>b;
while(a>b)
{    cout<<"Nu fi jmecher si nu da inceputul de interval mai mic decat sfarsitul,ok?. Citeste din nou"<<endl;
cin>>a>>b;
}
while(a==1)
{cout<<"Nu fi jmecher, stii bine ca numerele prime incep de la 2,ok?. Citeste din nou"<<endl;
cin>>a>>b;}
for(n=a;n<=b;n++)
    if(prim(n)==1)
        cout<<n<<";";
}
4. Numerele 220 si 284 sunt numere prietene deoarece:
220=1+2+3+5+10+11+20+22+44+55+110=284 si
284=1+2+3+71+142=220
            Sa se genereze primele n perechi de numere prietene.
#include<iostream>
using namespace std;
int suma(int a){
int s=0,i;
for(i=1;i<=a/2;i++)
if(a%i==0)
s=s+i;
return s;
}
void prietene(int n)
{int k=0,x=2,s;

while(k<n)
{s=suma(x);
if(s<x){x++;
continue;}
if(suma(s)==x){cout<<s<<" "<<x<<endl;
k++;}
x++;}
}
int main()
{int n;
cin>>n;
prietene(n);
return 0;
}
5. Numerele triangulare se calculeaza ca suma a primelor numere naturale. Exemplu: 10 este un numar triangular: 10=1+2+3+4. Sa se genereze primele n numere triangulare. Ex pt n=4 se vor genera 1,3,6,10.
#include<iostream>
using namespace std;
void trian(int nr)
{int n,i,s,j,k,p,r;
j=0;
while(j<nr)
{    for(n=1;n<INT_MAX;n++)
        {s=0;
        for(i=1;i<=n;i++)
            {s=s+i;
             if(s>=n)
                 break;
            }
        if(s==n)
            {cout<<n<<";";
            j++;}
        if(j>=nr)
            break;
        }
}
}

int main()
{int n;
cin>>n;
trian(n);
}
6. Un numar care este divizibil cu suma cifrelor lui, este numar Niven. Verificati care dintre numerele citite dintr-un fisier text sunt numere Niven.
#include<iostream>
#include<math.h>
#include<fstream>
using namespace std;
int niven(int n)
{int s=0,nr;
nr=n;
while(nr)
{    s=s+nr%10;
    nr=nr/10;
}
if(n%s==0)
    return 1;
else return 0;
}
int main()
{int n;
ifstream f("date.in");
while(f>>n)
    if(niven(n)==1)
        cout<<n<<";";
}

joi, 13 ianuarie 2011 by DlMuresan
Categories: , , , , , , | Leave a comment