Sesiunea iulie

Subiecte admitere

Rezolvare subiecte admitere

Subiectul I

a)

int cifre(int n) //transmitere prin valoare...valoarea lui n nu se modifica in afara subprogramului

{

int ogl=0;

while(n) // programul care returneaza oglinditul unui numar

{

ogl=ogl*10+n%10;

n=n/10;

}

return ogl;

}

void suma(int p, int n,int &s) //transmitere prin referinta...valoarea lui s se modifica si in afara subprogramului

{

int i;

s=0;

for(i=p;i<=n;i++)

s=s+i; //subprogramul care calculeaza suma numerelor p+(p+1)+(p+2)+...+n

}

b)

int cifre(int n,int X[20])

{

int a[10]={0},b[10]={0},i,j,max,poz;

for(i=0;i<n;i++)

{

while(X[i])

{

a[X[i]%10]=1;

X[i]=X[i]/10;

}

for(j=0;j<=9;j++)

{b[j]=b[j]+a[j];

a[j]=0;

}

}

max=b[0];

for(j=1;j<=9;j++)

if(max<b[j])

{max=b[j];

poz=j;

}

return poz;

}

c)

int c1(int n)

{

int a[9],i=0,nr=0;

for(i=0;i<9;i++)

a[i]=10;

i=0;

while(n)

{

a[i]=n%10;

i++;

n=n/10;

}

for(i=0;i<9;i++)

if(a[i]!=10)

nr=nr*10+a[i];

return nr;

}

int c2(int n)

{

int inv=0;

while(n)

{

inv=inv*10+n%10;

n=n/10;

}

return inv;

}

Subiectul II

a) s=16+240+30+105=391

b) 4,1,1,1,57

c) Se calculeasa suma c.m.m.m.c a fiecaror doi termeni alaturati.

Subiectul III

#include <iostream>

#include <cmath>

using namespace std;

int nrcifre(int n) // calculul numarului de cifre al unui numar

{

int s=0;

while(n)

{

n=n/10;

s++;

}

return s;

}

int cifmax(int n) // determinarea cifrei maxime a unui numar

{

int max;

max=n%10;

while(n)

{

if(max<n%10)

max=n%10;

n=n/10;

}

return max;

}

int pcif(int n) // determinarea primei cifre a unui numar

{

int p;

p=pow(10,nrcifre(n)-1);

return n/p;

}

int ucif(int n) // determinarea ultimei cifre a unui numar

{

return n%10;

}

int prim(int n) // verificarea daca un numar este prim

{

int s=0,i;

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

if(n%i==0)

s++;

if(s==2)

return 1;

else

return 0;

}

void sir(int n,int X[162]) // construirea sirului

{

int i=2,k=2,d;

X[1]=1;

while(i<=2*n*n)

{

X[i]=k;

if(!prim(k))

for(d=2;d<k;d++)

if(k%d==0)

{

i++;

X[i]=d;

}

k++;

i++;

}

}

int main() // programul principal

{

cout << "Hello world!" << endl;

int n,i,j,a[9][9],X[162],v[10]={0},k,s=0;

cout<<"n=";cin>>n;

sir(n,X);

for(i=1;i<=2*n*n;i++) // afisarea sirului

cout<<X[i]<<" ";

cout<<endl<<endl;

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

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

if(j>n-i+1) // sub diagonala secundara

a[i][j]=pcif(X[n*n+i+j]);

else

if(j==n-i+1) // pe diagonala secundara

a[i][j]=cifmax(X[n*n+i*i]);

else

a[i][j]=ucif(X[n*n+i+j]); // deasupra diagonalei secundare

for(i=1;i<=n;i++) // afisarea matricii

{for(j=1;j<=n;j++)

cout<<a[i][j]<<" ";

cout<<endl;

}

cout<<endl<<endl;

for(j=1;j<=n;j++) // afisarea celor mai mari numere

{s=0;

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

v[a[i][j]]++;

for(k=9;k>=0;k--)

while(v[k]!=0)

{s=s*10+k;

v[k]--;

}

cout<<s<<" ";;

}

return 0;

}