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