Orar semigroup #2

Orar semigroup #2

Archive for ianuarie 2011

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

10 ianuarie - Fisa de lucru 2


1) Sa se scrie un subprogram care sa returneze numarul de cifre ale unui numar natural n, dat ca parametru.

#include<iostream>
#include<math.h>
using namespace std;
int cifre(int n)
{int i=0;
while(n)
{i++;
n=n/10;}
return i;
}

int main()
{int n;
cin>>n;
cout<<cifre(n);
}
2) Sa se scrie un subprogram care verifica daca un numar natural este prim.
#include<iostream>
#include<math.h>
using namespace std;
char* prim(int n)
{int d,ok=1;
for(d=2;d<=n/2;d++)
    if(n%d==0)
        ok=0;
if(ok)
    return "DA";
else return "NU";
}

int main()
{int n;
cin>>n;
cout<<prim(n);
}
3) Sa se scrie un subprogram care verifica daca un numar natural este deosebit.
#include<iostream>
using namespace std;
int deosebit(int n)
{int i,s=0;
for(i=1;i<=n/2;i++)
if(n%i==0) s=s+i;
if(s==n) return 1;
else return 0;
}
int main ()
{int n;
cin>>n;
if(deosebit(n)==1) cout<<"DA";
else cout<<"NU";
return 0;
}
4) Sa se scrie un subprogram care returneaza cmmdc a doua numere intregi a si b.
#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,b;
cin>>a>>b;
cout<<cmmdc(a,b);
}
5) Sa se scrie un subprogram care sa afiseze toti divizorii comuni a doua numere naturale a si b.
#include<iostream>
#include<math.h>
using namespace std;
void divizori(int a, int b)
{int d,m;
m=a;
if(b<a)m=b;
for(d=1;d<=m;d++)
    if(a%d==0 && b%d==0)
        cout<<d<<";";
}

int main()
{int a,b;
cin>>a>>b;
divizori(a,b);
}

miercuri, 12 ianuarie 2011 by DlMuresan
Categories: , , , | 3 comments

7 ianuarie - arie/perimetru FULL


Gigel vrea sa-l ajute pe fratele mai mic sa isi verifice tema la matematica. El are de calculat arii sau perimetre pentru cerc, patrat, dreptunghi, trapez.
Verifica-l pe Gigel la tema!

#include<iostream>
#include<math.h>
using namespace std;
const double PI = 4.0*atan(1.0);
float ACerc(int r)
{cout<<PI*r*r<<endl;}
float PCerc(int r)
{cout<<PI*r*2<<endl;}

int ADreptunghi(int l, int L)
{cout<<l*L<<endl;}
int PDreptunghi(int l, int L)
{cout<<l+l+L+L<<endl;}

int APatrat(int lp)
{cout<<lp*lp<<endl;}
int PPatrat(int lp)
{cout<<4*lp<<endl;}

int PTrapez(int t1, int t2, int t3, int t4)
{cout<<t1+t2+t3+t4<<endl;}
int ATrapez(int t5, int t6, int h)
{cout<<(float)((t5+t6)*h/2)<<endl;}

int main()
{int r,l,L,lp,t1,t2,t3,t4,t5,t6,h;
cout<<"Raza cerc, laturi dreptunghi, latura patrat, laturi trapez, baze trapez, inaltime trapez"<<endl;
cin>>r>>l>>L>>lp>>t1>>t2>>t3>>t4>>t5>>t6>>h;
cout<<"A,P cerc; A,P dreptunghi; A,P patrat; A,P trapez;"<<endl;
ACerc(r);
PCerc(r);
ADreptunghi(l,L);
PDreptunghi(l,L);
APatrat(lp);
PPatrat(lp);
ATrapez(t5,t6,h);
PTrapez(t1,t2,t3,t4);
}

luni, 10 ianuarie 2011 by DlMuresan
Categories: | Leave a comment

6 ianuarie - subprograme

1) Steluţe

#include<iostream>
using namespace std;
void stelute(int n)
{int i;
for(i=1;i<=n;i++)
    cout<<'*';
cout<<endl;
}
int main()
{int a=20;
stelute(5);
stelute(10);
stelute(a);
return 0;
}
2) Linie
 #include<iostream>
using namespace std;
void linie(int n,char c)
{int i;
cout<<endl;
for(i=1;i<=n;i++)
    cout<<c;
}
int main()
{int a=20;
char ch;
linie(5,'*');
linie(10,'a');
cin>>ch;
linie(a,ch);
return 0;
}
3) Maxim
#include<iostream>
using namespace std;
int maxim(int a, int b, int c)
{int m=a;
if(b>c)m=b;
if(c>m)m=c;
return m;
}
int main()
{int x,y,z,t;
cin>>x>>y>>z>>t;
cout<<maxim(x,y,z)<<endl;
cout<<maxim(x,y,t);
return 0;
}
Temă
R1.1. Să se verifice dacă un număr n este pătrat perfect.
#include<math.h>
#include<iostream>
using namespace std;
int main()
{int n;
cin>>n;
if(sqrt(n)-(int)sqrt(n)==0)
    cout<<"DA";
else cout<<"NU";
}
R1.2. Să se calculeze aria unui triunghi cunoscându-se coordonatele vârfurilor acestuia.
#include<math.h>
#include<iostream>
using namespace std;
struct punct
{int x,y;};
int main()
{punct A,B,C;
float a,b,c,s,p;
cin>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y;
a=sqrtl((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
b=sqrtl((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y));
c=sqrtl((B.x-C.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y));
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"ARIA "<<s;
}
R2.1. Să se calculeze distanţa dintre două puncte din plan.
#include<iostream>
#include<math.h>
using namespace std;
struct punct
{float x,y;};
int main ()
{ float p;
punct A,B;
cin>>A.x>>A.y;
cin>>B.x>>B.y;
p=sqrtl((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
cout<<p;
}
R2.2. Să se afişeze dacă două numere complexe au acelaşi modul şi în caz afirmativ să se afişeze.
#include<iostream>
#include<math.h>
using namespace std;
struct complexnumber
{float x,y;};
int main ()
{ float a,b;
complexnumber A,B;
cin>>A.x>>A.y>>B.x>>B.y;
a=sqrt((A.x*A.x)+(A.y*A.y));
b=sqrt((B.x*B.x)+(B.y*B.y));
if(a==b)
    cout<<"DA"<<endl<<a;
else cout<<"NU";
}

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

Siteuri Subprograme



WIKI

GrupaDLM
DlMuresan
Vanea
Pop Cosmin 
Baciu Raul

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