Sesiunea iulie
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;
}