Sunteți pe pagina 1din 2

1.

Subprogramul divizor, cu trei parametri, prin care primete 3 numere naturale nenule cu cel mult 9 cifre
fiecare i returneaz numrul divizorilor comuni tuturor celor 3 numere.
Exemplu: dac numerele primite ca parametri sunt 24, 20 i 12, subprogramul returneaz valoarea 3
(divizorii comuni sunt 1, 2 i 4).

Rezolvare:
Antet:
int divizor(int a,int b, int c)
Subprogram:
int divizor(int a, int b,int c)
{
int x=0,d,minim;
minim=a;
if(minim>b)
minim=b;
if(minim>c)
minim=c;
for(d=1;d<=minim;d++)
if(a%d==0 &&b%d==0&&c%d==0)
x++;
return x;
}
int main()
{
cout<<divizor(24,20,12);
return 0,
}

2. Subprogramul Nr are un singur parametru, k, prin intermediul cruia primete un numr
natural de cel puin 3 cifre i cel mult 9 cifre, cu toate cifrele nenule. Subprogramul furnizeaz tot prin
intermediul parametrului k, valoarea obinut prin eliminarea primei i ultimei cifre a numrului transmis la
apel.
Exemplu: dac subprogramul primete prin intermediul parametrului k valoarea 12438, n urma apelului
subprogramului Nr, k va primi valoarea 243.

Rezolvare:
Antet:
void Nr(int &k)
Subprogram:

void Nr(int &k)
{ int x,e=1;
k=k/10;
x=k;
k=0;
while(x>9)
{
k=k+(x%10)*e;
e=e*10;
x/=10;
}
}
int main()
{
int a;

a=12348;
Nr(a);
cout<<a;
return 0;
}

3. Tabloul unidimensional V, declarat global, memoreaz exact 50 de numere ntregi:
V1, V2,...,V50. Subprogramul Calcul primete prin intermediul parametrului k un numr natural nenul
(k50) i furnizeaz prin intermediul parametrului S suma tuturor elementelor pozitive, din tabloul V, cu indici
mai mari sau egali cu k sau 0 dac toate elementele menionate sunt negative.

Rezolvare:
Antet:
void Calcul(int k,int &S)
Subprogram:

int V[51]={0,1,2,3,4,5};
{
int i;
S=0;
for(i=k;i<=5;i++)
if(V[i]>0)
S+=V[i];
}

int main()
{
int S;
Calcul(2,S);
cout<<S;
return 0;
}
4. Funcia f primete prin intermediul parametrului n un numr natural nenul (2n200), iar prin
intermediul parametrului a un tablou unidimensional care conine n valori ntregi nenule (fiecare dintre aceste
valori ntregi avnd cel mult patru cifre). Funcia returneaz valoarea -1 dac numrul de valori negative din
tabloul a este strict mai mare dect numrul de valori pozitive din tablou, valoarea 0 dac numrul de valori
negative din a este egal cu numrul de valori pozitive din tablou i valoarea 1 dac numrul de valori pozitive
din tabloul a este strict mai mare dect numrul de valori negative din a.

Rezolvare:
Antet:
int f(int n,int a[])
Subprogram:
int f(int n,int a[])
{
int i,neg=0,poz=0;
for(i=1;i<=n;i++)
if(a[i]>0)
poz++;
else
if(a[i]<0)
neg++;
if(neg>poz)
return -1;
if(neg==poz)
return 0;
return 1;
}


int main()
{
int a[20],n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
cout<<f(n,a);
return 0;
}

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