Sunteți pe pagina 1din 14

Probleme C++

1.
//suma elementelor unei matrice
#include <iostream>
using namespace std;
int main()
{
int a[50][50],n,m,i,j,s=0;
//matricea a o declaram cu maxim 50 de linii si 50 de coloane
//n=nr de linii
//m=nr de coloane
//i si j pt parcurgerea matricei
//s=suma elementelor
cout<<"dati nr de linii: "; cin>>n;
cout<<"dati nr de coloane: "; cin>>m;
//citirea matricei:
for(i=1;i<=n;i++) //parcurgem matricea pe linii
for(j=1;j<=m;j++) //apoi pe coloane
cin>>a[i][j]; //citim elementele

//calculam suma elemetelor


for(i=1;i<=n;i++) //parcurgem matricea pe linii
for(j=1;j<=m;j++) //apoi pe coloane
s=s+a[i][j];
cout<<"suma elemetelor este: "<<s; //afisam suma
}
2.
//cmmdc a 2 nr a si b
#include <iostream>
//folosim algoritmul lui Euclid:
//se calculeaza restul impartirii lui a la b
//a primeste valoarea lui b
//b primeste valoarea restului
//se efectueaza iar impartirea
//procedeul se repeta pana cand restul va fi 0
//cmmdc va fi ultimul b
using namespace std;

int main()
{
int a,b,r;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
r=a%b; //r=restul impartirii lui a la b
while(r!=0) //cat timp restul este diferit de 0
{
a=b;
b=r;
r=a%b;
}
cout<<"cmmdc este: "<<b;
}
3.
//cmmmc a 2 nr a si b
#include <iostream>
//se calculeaza cu formula: cmmmc=a*b / cmmdc
using namespace std;

int main()
{
int a,b,r,a1,b1;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
//in urma impartirilor, valorile initiale ale lui
//a si b se vor pierde, asa ca le vom retine
//in a1 si b1 (copii ale valorilor a si b)
a1=a;
b1=b;
r=a%b; //r=restul impartirii lui a la b
while(r!=0) //cat timp restul este diferit de 0
{
a=b;
b=r;
r=a%b;
}
cout<<"cmmmc este: "<<a1*b1/b;
}
4.
//descompunerea in factori primi
#include <iostream>
using namespace std;

int main()
{
int n,d=2,p;
//n=numarul descompus
//d=fiecare divizor prim al sau, incepand cu 2
//p=puterea la care apare

cout<<"n="; cin>>n; //citim numarul


while(n>1) //cat timp n se mai poate impartii
{
p=0; //deocamdata, presupusul divizor apare la puterea 0
while(n%d==0) //daca n se divide cu d
{
p++; //puterea creste cu o unitate
n=n/d; //se actualizeaza n
}
if(p>0) //afisam doar daca d apare la o putere >0
cout<<d<<" la puterea "<<p<<endl;
d++;
}
}
6.
//cifra maxima a unui nr si numarul de aparitii ale acesteia
#include <iostream>
using namespace std;

int main()
{
int n,cm=0,nr=0;
//n=numarul
//cm=cifra maxima. Initial, cm este 0
//nr=nr de aparitii ale cifrei maxime
cout<<"n="; cin>>n; //citim numarul
while(n>0)//cat timp n mai are cifre
{
if(n%10>cm) //daca ultima cifra este > cm
{
cm=n%10; //cifra maxima este acum ultima cifra a lui n
nr=1; //a aparut o data
}
else
if(n%10==cm)//daca ultima cifra = cm
nr++; //o numaram
n=n/10;//se elimina u.c. pt a putea trece la urmatoarea
}
cout<<"cifra maxima este "<<cm<<" si a aparut de "<<nr<<" ori";
}
7.
//rasturnatul sumei cifrelor unui nr
#include <iostream>
using namespace std;

int main()
{
int n,s=0,o=0;
//n=numarul
//s=suma cifrelor sale, initial 0
//o=rasturnatul/oglinditul
cout<<"n="; cin>>n;
while(n>0)//cat timp n are cifre
{
s=s+n%10; //s=anteriorul s + ultima cifra
n=n/10; //se elimina u.c. pt a putea avea acces la urmatoarea
}
//calculam rasturnatul lui s
while(s>0)//cat timp s are cifre
{
o=o*10+s%10; //in o adaugam un 0 la final, apoi adunam u.c. a lui s
s=s/10; //eliminam u.c. a lui s
}
cout<<"rasturnatul sumei cifrelor este "<<o;
}
8.
//sa se verifice daca un nr este prim
#include <iostream>
using namespace std;

int main()
{
int n,ok=1,d;
//n=numarul
//daca ok=1 atunci nr este prim, daca ok=0 nu este prim
//initial, presupunem ca n este prim (ok=1)
//daca gasim un divizor al lui n din intervalul [2,n/2]
//atunci n nu mai este prim (ok=0)
//excludem nr pare, si tratam cazurile particulare 0 si 1
cout<<"n="; cin>>n; //citim nr
if((n==1)||(n==0)) //daca n=1 sau n=0, nu este prim
ok=0;
else
if(n%2==0) //daca este se divide cu 2
if(n==2) //2 este singurul nr par prim
ok=1;
else
ok=0;
else //daca nr este impar
for(d=2;d<=n/2;d++)//luam posibilii divizori ai lui n
if(n%d==0)//daca n este divizibil cu d, nu este prim
ok=0;
if (ok==1)
cout<<"da";
if(ok==0)
cout<<"nu";
}

S-ar putea să vă placă și