Sesiunea iulie

Subiecte admitere

Rezolvare subiecte admitere

Subiectul I

a)

Consideram urmatorul sir ordonat crescator: X=(1,2,3,4,5,6,7,8,9,10)

Vrem sa cautam in sir valoarea "4".

Cautarea secventiala

Cautarea va incepe pornind de la valoaarea 1 si va merge "din unu in unu" pana la valoarea 4

Cautarea binara

se noteaza capetele sirului cu "p" fiind primul element, iar "u" este ultimul element

cautarea va incepe de la mijlocul acestui interval, in cazul nostru, elementul de mijloc este 5

daca elementul de mijloc este mai mare decat numarul cautat, "u" ia valoarea mijlocului, in caz contrar, "p" ia valoarea mjlocului

in caz ca valoarea mijlocului este numarul cautat, atunci cautarea s-a incheiat

cautarea se repeta folosind procedeul descris mai sus

prima valoare de mijloc in cazul nostru este 5, a doua valoare de mijloc este 3, iar ultima valoare de mijloc este valoarea cautata, 4

b)

Parametrii formali sunt acei parametrii din cadrul unui subprogram. Acestia sunt definiti in cadrul subprogramului

Parametrii efectivi sunt parametrii din afara subprogramelor.(exemplu: variabilele globale)

int a=1,b=2; //parametrii efectivi(variabile globale)

int suma(int n,int s) // "n" si "s" sunt parametrii formali

{

int i,j,t=0;

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

t=t+i;

for(j=1;j<=s;j++) //variabilele "i" , "j", "t", "n", "s" sunt definite doar in cadrul acestui subprogram, ele nu sunt definite in afara acestuia

t=t+j; //variabilele "a" si "b" sunt definite atat nu numai in cadrul subprogramului

t=t+a+b;

return t;

}

c)

#include <iostream>

using namespace std;

// Consideram doua siruri ordonate crescator s1=(1,3,5,7) si s2=(2,4,6,8).

// Prin interclasare ne referim la crearea unui nou sir "s" ordonat crescator format din elementele sirurilor "s1" si "s2".

// Dupa interclasare, sirul "s" va fi s=(1,2,3,4,5,6,7,8).

// Algoritmul de interclasare este de forma O(n)

int main()

{

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

int i,j,k,n,m,s1[100],s2[100],s[200];

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

cout<<"m=";cin>>m;

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

cin>>s1[i];

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

cin>>s2[j];

i=0;j=0;k=-1;

while((i<n)&&(j<m))

{k++;

if(s1[i]<s2[j])

{

s[k]=s1[i];

i++;

}

else

{

s[k]=s2[j];

j++;

}

}

while(i<n)

{k++;

s[k]=s1[i];

i++;

}

while(j<=m)

{k++;

s[k]=s2[j];

j++;

}

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

cout<<s[i]<<" ";

return 0;

}

Subiectul II

a)

se afiseaza 2

i=0....v=v*1+1=1

i=1....v=v*1+8=9

i=2....v=v*1+0=9

i=3....v=v*1-4=5

i=4....v=v*1-3=2

deci...v=2

b)

se afiseaza -23

i=0....v=v*(-1)-1=-1

i=1....v=v*(-1)+3=4

i=2....v=v*(-1)+0=-4

i=3....v=v*(-1)+5=9

i=4....v=v*(-1)-2=-11

i=5....v=v*(-1)+4=15

i=6....v=v*(-1)-8=-23

deci...v=-23

c)

3 1 3 -3 0 0

Subiectul III

#include <iostream>

using namespace std;

void citire(int n,int X[100]) // citirea unui sir

{

int i;

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

cin>>X[i];

}

void afisare(int n,int X[100]) // afisarea unui sir

{

int i;

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

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

}

int asemenea(int n,int m) // verificarea daca doua numere sunt asemenea

{

int a[10]={0},b[10]={0},i,p=1;

while(n)

{

a[n%10]=1; // tabloul a memoreaza ce cifre au aparut in scrierea numarului "n"

n=n/10;

}

while(m)

{

b[m%10]=1; // tabloul b memoreaza ce cifre au aparut in scrierea numarului "m"

m=m/10;

}

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

if(a[i]!=b[i]) // daca cele doua numere au in componenta lor aceleasi cifre, atunci numerele sunt asemenea

p=0;

return p;

}

int main()

{

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

int i,j,n,X[100],R[100],k=1,p,t,c[100],v=1;

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

citire(n,X);

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

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

{p=1;

if(asemenea(X[i],X[j])) // se verifica daca cele doua numere sunt asemenea

{

for(t=1;t<=k;t++) // se verifica "unicitatea" astfel incat sirul R sa fie format din termeni unici

if(X[i]==R[t])

p=0;

if(p==1)

{R[k]=X[i];

k++;

}

p=1;

for(t=1;t<=k;t++)

if(X[j]==R[t])

p=0;

if(p==1)

{R[k]=X[j];

k++;

}

}

}

for(i=1;i<=n;i++) // termenii sirului "X" vor fi diferenta multimilor( X-R )

{p=1;

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

if(X[i]==R[j])

p=0;

if(p==0)

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

X[i]=X[i+1];

n--;

i--;

}

}

cout<<endl;

afisare(n,X); // afisam termenii lui X

cout<<endl;

if(k==1)

cout<<"R este sirul vid";

else

afisare(k-1,R); // afisam termenii lui R

return 0;

}