Model admitere

Subiect model admitere

Rezolvare subiect model admitere

Subiectul I

a)

Variabilele sunt date ale caror valori se pot modifica pe parcursul executiei programului.

Variabilele sunt caracterizate si prin tipul de date pe care il memoreaza.

int a; -variabila "a" memoreaza un numar de tip "int"(multimea numerelor intregi din intervalul specific pentru int)

float b; -variabila "b" memoreaza un numar de tip "float"(multimea numerelor reale din invervalul specific pentru float)

char c[10]; -variabila "c" memoreaza un sir de maxim 9 caractere, ultimul caracter fiind alocat sfarsitului de sir

Astfel, variabilele pot memora mai multe tipuri de date.

Constantele sunt acele tipuri de date care nu isi modifica valoarea in timpul executier programului.

const pi=3.14; -declaratie constanta

b)

Un tablou este o colectie de variabile de acelasi tip. Apelarea unui element din tablou se face cu ajutorul unor indici.

int a[10]; -tablou unidimensional cu maxim 10 elemente; a[2] -apelarea elementului de pe pozitia "2"

int b[10][10] -tablou bidimensional cu 10 linii si 10 coloane; b[2][2] - apelarea elementului de pe linia 2, coloana 2

c)

#include <iostream>

using namespace std;

// Prin sortarea unui sir de date se intelege ordonarea intr-o ordine specifica a acelui sir de date.

// Exemplu: sortarea unui sir de numere in ordine crescatoare respectiv descrescatoare

int main()

{

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

int n,i,a[100],s=0,aux;

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

for(i=0;i<n;i++) //citirea elementelor sirului

cin>>a[i];

do //sortarea in ordine crescatoare

{ s=0;

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

if(a[i]>a[i+1])

{ // in cazul cel mai favorabil, al sirului deja ordonat, algoritmul face "n-1" verificari

aux=a[i]; // in cazul cel mai nefavorabil, algoritmul face n(n-1)/2 comparari si n(n-1)/2 interschimbari

a[i]=a[i+1]; // algoritmul are in general o complexitate de O(n^2)

a[i+1]=aux;

s=1;

}

}while(s!=0);

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

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

return 0;

}

Subiectul II

a)

se afiseaza 22222

b)

3 222 22 2

c)

citeste n;

s=0;

Pentru i<-1,n executa

nr<-1;

citeste x;

Daca x>9 atunci

Repeta

nr<-nr*10;

x<[x/10];

Pana cand x<10;

SfDaca

s<-s+x*nr

SfPentru;

Tipareste s;

Subiectul III

Metoda 1

#include <iostream>

using namespace std;

int palindrom(int n) // verificare daca un numar este palindrom

{

int inv=0,aux;

aux=n;

while(aux) // calcularea oglinditului

{

inv=inv*10+aux%10;

aux=aux/10;

}

if(n==inv) // daca numarul initial este egal cu oglinditul sau atunci acesta este palindrom

return 1;

else

return 0;

}

void afisare(int n, int v[100]) // afisare sir

{

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

cout<<v[i]<<" ";

cout<<endl;

}

int main()

{

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

int n=1,i=0,j,X[100],k=0,t=0,m,v;

while(n!=0)

{

cout<<"n=";cin>>n; // citire sir

if(n!=0)

{

X[i]=n;

i++;

}

}

int Y[100];

// construirea sirului Y

while(t<i)

{

m=X[0];

for(j=0;j<i;j++) // calcularea maximului din sir

if(m<X[j])

m=X[j];

if(palindrom(m) && m!=0) // daca maximul din sir este palindrom il punem in sirul Y

{

Y[k]=m;

k++; // "k" este numarul de elemente din sirul "Y"

}

for(v=0;v<i;v++) // valoarea maxima din sir devine "0"

if(m==X[v])

{

X[v]=0;

t++;

}

} // calcularea maximelor se face cat timp exista elemente in sirul "X"

if(k==0) // daca numarul de elemente sin sirul "Y" este 0, atunci sirul "Y" este vid

cout<<"Sirul Y e vid";

else

afisare(k,Y);

return 0;

}

Metoda 2

#include <iostream>

using namespace std;

int palindrom(int n)

{

int inv=0,aux;

aux=n;

while(aux)

{

inv=inv*10+aux%10;

aux=aux/10;

}

if(n==inv)

return 1;

else

return 0;

}

void afisare(int n, int v[100])

{

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

cout<<v[i]<<" ";

cout<<endl;

}

int inserare(int n,int k,int a[100])

{

int i=0;

while(i<n&&k<a[i])

i++;

if(i<n)

return i;

else

return n+1;

}

void ins(int &n,int k,int a[100])

{

int i;

if(inserare(n,k,a)>n)

{

a[n]=k;

n++;

}

else

{

if(a[inserare(n,k,a)]!=k)

{n++;

for(i=n;i>inserare(n,k,a);i--)

a[i]=a[i-1];

a[inserare(n,k,a)]=k;

}

}

}

int main()

{

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

int n=1,i=0,j=0,X[100],k=0,t=0,m,v;

while(n!=0)

{

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

if(n!=0)

{

X[i]=n;

i++;

}

}

int Y[100];

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

{

if(palindrom(X[v]))

ins(k,X[v],Y);

}

if(k==0)

cout<<"Sirul Y e vid";

else

afisare(k,Y);

return 0;

}