Sunteți pe pagina 1din 6

//13.

Sa se scrie un program care citeste cate doua numere,


//pana la intalnirea perechii de numere 0, 0 si afiseaza,
//de fiecare data, cel mai mare divizor comun al acestora,
//folosind o functie care il calculeaza.

#include <iostream>

using namespace std;

int cmmdc(int x, int y)


{
if (x==0 || y==1 || x==1 || y==0)
return 1;

while (x != y)
{
if ( x > y )
x -= y;
else
y -= x;
}

return x;
}

int main()
{
int n1, n2;
cout<<"Introduceti primul numar: ";
cin>>n1;
cout<<"Introduceti al doilea numar: ";
cin>>n2;

while (n1!=0 || n2!=0)


{
cout<<"Cel mai mare divizor comun: "<<cmmdc(n1,n2);

cout<<"\n\nIntroduceti primul numar: ";


cin>>n1;
cout<<"Introduceti al doilea numar: ";
cin>>n2;
}
}
//14. Se introduce de la tastatura un numar intreg. Sa se afiseze
//toti divizorii numarului introdus. Se va folosi o functie
//care sa verifice daca un numar este divizorul altui numar.

#include <iostream>

using namespace std;

int diviz(int i, int n)


{
if (n%i==0)
return 1;
//returnam 1 daca i este divizor al lui n

return 0;
//returnam 0 daca i nu este divizor al lui n
}

int main()
{
int nr;
cout<<"Introduceti numarul: ";
cin>>nr;

cout<<"\nDivizorii numarului introdus:\n";


for (int i=1; i<=nr/2; i++)
if(diviz(i,nr))
cout<<i<<" ";
}

//15. Scrieti o functie gaseste_cifra care returneaza valoarea cifrei


//aflate pe pozitia k in cadrul numarului n, incepand de la dreapta
//(n si k vor fi argumentele functiei).

#include <iostream>
#include <math.h>

using namespace std;

int gaseste_cifra(long n, int k)


{
long aux = n / pow(10,k-1);
return aux%10;
}

int main()
{
int nr, poz;
cout<<"Introduceti numarul: ";
cin>>nr;
cout<<"Pozitia cifrei dorite: ";
cin>>poz;

cout<<"\nCifra de pe pozitia "<<poz;


cout<<" (de la dreapta la stanga): "<<gaseste_cifra(nr,poz);
}
//16. Sa se scrie un program care genereaza toate numerele palindrom,
//mai mici decat o valoare data, LIM. Un numar palindrom are cifrele
//simetrice egale (prima cu ultima, a doua cu penultima, etc).
//Se va folosi o functie care testeaza daca un numar este palindrom.

#include <iostream>

using namespace std;

int palindrom(long n)
{
int cif[10], i=0;

do
{
cif[i] = n1%10;
n = n/10;
i++;
} while (n!=0);

for (int k=0; k<i/2; k++)


if (cif[k]!=cif[i-1-k])
return 0;

return 1;
}

int main()
{
long LIM;
cout<<"Introduceti limita pana la care cautati palindroame: ";
cin>>LIM;

for (long i=11; i<=LIM; i++)


if (palindrom(i))
cout<<i<<'\n';
}
//17. Sa se calculeze S = 1! + 2! + 3! + . . . + n!, unde n este un
//numar natural, introdus de la tastatura. Se va folosi o functie
//pentru calculul factorialului.

#include <iostream>

using namespace std;

double fact(double n)
{
double f=1;

for (int i=2; i<=n; i++)


f *= i;

return f;
}

int main()
{
double S=0, n;
cout<<"Introduceti n: ";
cin>>n;

for (int i=1; i<=n; i++)


S += fact(i);

cout<<"S="<<S;
}
//18. Fie n natural, citit de la tastatura (n<100). Sa se determine
//toate tripletele de numere (x, y, z) mai mici decat n, care sunt
//numere pitagorice (indeplinesc relatia x^2 + y^2 = z^2). Numerele
//fiecarui triplet vor fi afisate în ordine crescatoare, pe cate o
//linie a ecranului.

#include <iostream>
#include <math.h>

using namespace std;

int pitagoric(int a, int b)


{
int c, i=1;
c = a*a + b*b;

while (i)
{
if (c==i*i)
return sqrt(c);
if (c<i*i)
return 0;
i++;
}
}

void afis_cresc(int a, int b, int c)


{
int aux;

if (a>b)
{
aux=a;
a=b;
b=aux;
}

if (a>c)
{
aux=a;
a=c;
c=aux;
}

if (b>c)
{
aux=b;
b=c;
c=aux;
}

cout<<a<<" "<<b<<" "<<c<<endl;


}
int main()
{
int n, x, y, z;
cout<<"Introduceti numarul n: ";
cin>>n;

for (x=1; x<n; x++)


for (y=x; y<n; y++)
{
z = pitagoric(x,y);
if (z && z<=n)
afis_cresc(x,y,z);
}
}

//19. Sa se calculeze valorile urmatoarelor expresii (n natural, citit


//de la tastatura), folosind o functie care calculeaza termenul
//general.
//E(n)=1*(1+2)*(1+2+3)* . . . *(1+2+3+. . . +n)
//E(n)=1*2 - 2*4 + 3*6 - 4*8 + . . . +((-1)^(n+1))*n*2*n

#include <iostream>
#include <math.h>

using namespace std;

double general1(int i)
{
if (i==1)
return 1;
return i+general1(i-1);
}

double general2(int i)
{
return pow(-1,i+1)*i*2*i;
}

int main()
{
int n;
double exp1=1, exp2=0;

cout<<"Introduceti n: ";
cin>>n;

for (int i=1; i<=n; i++)


{
exp1 *= general1(i);
exp2 += general2(i);
}

cout<<"\nExpresia1: "<<exp1;
cout<<"\nExpresia2: "<<exp2;
}