Documente Academic
Documente Profesional
Documente Cultură
oarecare a lui
este
R: z
ROTATIE
Fie n numarul elementelor unui vector ordonat, respectiv numarul nodurilor unui arbore binar
de cautare. Indicati care dintre urmatoarele afirmatii este falsa:
R: Algoritmul de cautare binara intr-un vector ordonat si algoritmul de cautare intr-un
arbore binar de cautare au aceeasi complexitate si aceasta este O(n).
R: T &operator[](int i);
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
R: C2::C2()
C1::C1()
S::S()
este:
R:
, hiperbola
Aplicatia liniara
, a carei matrice intr-o baza oarecare a lui
are valorile proprii egale cu:
R:
este
Inaltimea minima a unui arbore binar de cautare ale carui noduri contin cheile: 6, 9, 12, 14,
16, 17, 21, 35, 39 este:
R: 4
si
este
R: n=(-4,-1,-5)
Fie un arbore binar de cautare ale carui noduri sunt etichetate cu numere cuprinse intre 1 si
100. Se doreste gasirea numarului 36. Care dintre urmatoarele secvente nu poate sa fie o
secventa de examinare a nodurilor?
R: 93, 27, 34, 62, 29, 39, 35, 36
Vectorii
formeaza:
este
,a
este
R:
Vectorii
formeaza:
R: T operator[](int i);
Analizati cu atentie urmatorul fragment de cod sursa. Precizati ce tip de eroare se produce si
ce se va afisa pe ecran?
class Error
{
public:
void Print(){ cout<<"0";}
};
class ImparError : public Error
{
public:
void Print(){ cout<<"1";}
};
class ParError : public Error
{
public:
void Print(){ cout<<"2";}
};
void f(int t)
{
if(t%2)
throw ImparError();
else
throw ParError();
}
int main()
{
try{
f(0);
f(1);
}
catch(Error &e)
{
e.Print();
}
catch(ImparError &e)
{
e.Print();
}
catch(ParError &e)
{
e.Print();
}
return 0;
}
R: 0
void erase()=0;
void put(AbstractElem* ae)=0;
AbstractElem* get()=0;
int isEmpty()=0;
int isFull()=0;
};
Care declarare este corecta:
R: AbstractList *pa;
si
Inaltimea maxima pe care o poate avea arborele binar avand nodurile: 1, 4, 5, 10, 16, 17, 21
este:
R: 7
este
R: o dreapta
In spatiul vectorial
, pornind de la baza:
gasim urmatoarea baza ortonormata
R:
, conica de ecuatie:
este o elipsa?
R:
.Ce
R: 21
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
virtual ~Baza(){ cout<<"B::~B()"<<endl;}
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza *s = new Derivat();
delete s;
return 0;
}
R: B::B()
D::D()
D::~D()
B::B()
este
este:
R:
Care vor fi valorile continute intr-o stiva (de la baza catre varf), initial vida, daca se efectueaza
urmatoarele operatii, in aceasta ordine:
- se introduc, in ordine: 5, 7, 23, 15, 12
- se extrag trei elemente
- se introduc, in ordine: 17, 42, 25
- se extrag doua elemente
- se introduc, in ordine: 13, 2, 45
R: 5, 7, 17, 13, 2, 45
Se numeste arbore binar strict un arbore binar cu proprietatea ca fiecare nod, cu exceptia
nodurilor terminale, are exact doi descendenti. Care dintre urmatoarele afirmatii este
adevarata?
R: Orice arbore binar strict are un numar impar de noduri.
Unghiul
dintre planele
si
este egal cu :
R:
In spatiul vectorial
baza B, vectorul
R:
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este valoarea variabilei
x si ce se va afisa pe ecran?
template <int T>
struct X
{
enum val {v = T * X<T-1>::v };
};
template <>
struct X<0>
{
enum val {v = 1 };
};
int main()
{
int x = X<6>::v;
cout<< x << endl;
}
R: 720
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
Baza(Baza &b){ cout<<"B::B(B&)"<<endl;}
virtual ~Baza(){ cout<<"B::~B()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza a;
Baza& b = a;
Baza c(b);
return 0;
}
R: B::B()
B::B(B&)
Se da sirul: 34, 72, 81, 96, 102, 373, 482, 793. Care din urmatoarele afirmatii este falsa?
R: Nu se poate construi un arbore binar de cautare prin a carui parcurgere in inordine sa se
obtina sirul de numere indicat mai sus.
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
virtual ~Baza(){ cout<<"B::~B()"<<endl;}
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
virtual ~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza *s = new Derivat();
return 0;
}
R: B::B()
D::D()
sa fie
perpendiculara pe planul
R:
R: 2x-3y+4z-1=0
Indicati complexitatea algoritmului de determinare a lungimii unei liste dublu inlantuite, unde
n este numarul de noduri din lista.
R: O(n)
Care dintre urmatoarele diagrame UML NU se folosesc in mod obisnuit pentru a ilustra cazuri
de utilizare?
R: diagrama de colaborare
Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta si precizati ce
se va afisa pe ecran?
class Sir
{
int len;
char *p;
public:
Sir(char * s = NULL)
{
p = NULL;
len = 0;
if(s)
{
len = strlen(s);
p = new char[len+1];
este
este:
R:
Identificati care dintre elementele de modelare UML urmatoare NU este asociat cu diagramele
cazurilor de utilizare (Use-case Diagrams)?
R: Aggregate relationships (relatii de agregare)
si
.
O baza a subspatiului vectorial
este reprezentata de :
R:
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza metodele virtuale?
class Baza2
{
public:
Baza2(){ Create(); }
virtual void Create()
{
cout<< 'B' ;
}
};
class Derivat2:public Baza2
{
public:
Derivat2(){ Create(); }
virtual void Create()
{
cout<< 'D' ;
}
};
int main (int argc, char* argv[])
{
Baza2 *p = new Derivat2();
return 0;
}
R: BD
Care vor fi valorile continute intr-o coada, initial vida, daca se efectueaza urmatoarele operatii
in
aceast ordine:
- se introduc, in ordine: 5, 7, 23, 15, 12
- se extrag trei elemente
- se introduc, in ordine: 17, 42, 25
- se extrag doua elemente
- se introduc, in ordine: 13, 2, 45
R: 17, 42, 25, 13, 2, 45
Fie A o matrice cu 20 de linii si 10 coloane, stocata intr-un vector obtinut prin linearizarea
linie a acesteia. In cadrul acestui vector, rangul elementului A(13, 7) este:
R: 126
Se numeste arbore binar strict un arbore binar cu proprietatea ca fiecare nod, cu exceptia
nodurilor terminale, are exact 2 descendenti. Numarul total de noduri ale unui arbore binar
strict, cu n noduri terminale, este:
R: 2n - 1
Aplicatia liniara
, a carei matrice intr-o baza oarecare a lui
valorile proprii egale cu:
R:
este
are
si
R: x-z-2=0
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
~Baza(){ cout<<"B::~B()"<<endl;}
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
virtual ~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza *s = new Derivat();
delete s;
return 0;
}
R: B::B()
D::D()
B::~B()
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
destructorilor. Ce se va afisa pe ecran?
class Clasa1
{
public:
virtual ~Clasa1(){ cout<<"C1::~C1()"<<endl; }
};
class Clasa2
{
public:
virtual ~Clasa2(){ cout<<"C2::~C2()"<<endl;}
};
class System
{
Clasa2 ob1;
Clasa1 ob2;
public:
System():ob1(),ob2(){ }
virtual ~System(){ cout<<"S::~S()"<<endl;}
};
int main (int argc, char* argv[])
{
System a;
return 0;
}
R: S::~S()
C1::~C1()
C2::~C2()
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza metodele virtuale?
class Baza2
{
public:
Baza2(){ }
virtual void operator++() const { cout<<'1'; }
virtual void operator++(int) const { cout<<'2'; }
};
class Derivat2:public Baza2
{
public:
Derivat2(){ }
void operator++() const { cout<<'3'; }
void operator++(int) const { cout<<'4'; }
};
int main (int argc, char* argv[])
{
Baza2 *p = new Derivat2();
(*p)++;
++(*p);
delete p;
return 0;
}
R: 43
Determinati complexitatea algoritmului de identificare a celui mai mare element al unei liste
circulare ce contine n noduri este:
R: O(n)
};
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
destructorilor. Ce se va afisa pe ecran?
class W
{
public:
~W(){ cout<<"W::~W()"<<endl;}
};
class R
{
public:
~R(){ cout<<"R::~R()"<<endl;}
};
class File: public W, public R
{
public:
~File(){ cout<<"File::~File()"<<endl;}
};
int main ()
{
R* f = new File();
delete f;
return 0;
}
R: R::~R()
Fie algoritmul de sortare prin metoda bulelor descris mai jos, unde A este vectorul de sortat,
iar n reprezinta dimensiune sa (componentele vectorului sunt A[1], ...., A[n]):
for i := 1 to n - 1 do
for j := n downto i+1 do
if A[j].key < A[j-1].key
then interschimba(A[j], A[j-1])
Se aplica acest algoritm vectorului A ale carui chei au initial valorile (in ordine, de la A[1] la
A[7]): 13, 15, 84, 93, 36, 23, 59.
Sa se indice valorile cheilor vectorului, in ordine de la A[1] la A[7], in momentul in care
variabila i ia valoarea 2:
R: 13, 15, 23, 84, 93, 36, 59
R: paraboloid eliptic
este:
R:
elipsa
, a carei matrice
este
R: 1
class Empty
{
int null;
public:
Empty(){}
~Empty(){}
};
class EmptyToo : public Empty
{
public:
EmptyToo(){}
virtual ~EmptyToo(){}
};
class EmptyThree : public EmptyToo
{
public:
EmptyThree(){}
~EmptyThree(){}
};
int main()
{
std::cout << sizeof(EmptyThree);
return 0;
}
R: 8
Vectorii
spatiului vectorial real
pentru:
R:
Cifrele ce constituie CNP-ul dvs. sunt elementele unui vector cu lungimea data de numarul
cifrelor din CNP. Presupunem ca acest vector s-a obtinut prin linearizarea coloana a unei
matrici superior k-diagonale cu n linii si n coloane. Sa se indice valoarea minima pe care o
poate avea n.
R: 7
Daca vreti sa aratati relatia fizica dintre componentele software si hardware intr-un sistem
livrat, ce diagrama UML folositi?
R: Deployment diagram (diagrama de desfasurare)
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este efectul apelarii
metodei Create(), ce varianta a functiei se va apela si ce se afiseaza pe ecran?
class A
{
protected:
int dim;
public:
A(){ cout<<"A::A()"<<endl;}
virtual ~A(){ cout<<"A::~A()"<<endl;}
virtual void Create(int d = 0x10)
{
dim = d;
cout<<"A::Create("<<dim<<")"<<endl;
}
};
class B: public A
{
public:
B(){ cout<<"B::B()"<<endl;}
virtual ~B(){ cout<<"B::~B()"<<endl;}
virtual void Create(int d = 0x100)
{
dim = d;
cout<<"B::Create("<<dim<<")"<<endl;
}
};
int main()
{
A* p = new B();
p->Create( );
delete p;
return 0;
}
R: B::Create(16)
este o parabola?
R:
Imaginea aplicatiei
, data de matricea
este:
R: 1 1
singleton
Numarul arborilor binari care se pot construi cu nodurile distincte 29, 45, 111 este:
R: 30
Care dintre urmatoarele nu este un tip valid de mesaj intr-o diagrama de secventa in UML?
R: mesaj de activare
R: subarborele drept al radacinii devine subarbore drept al celui mai mare element al
subarborelui stang al radacinii
Aplicatia liniara
valorile proprii egale cu:
este
are
R:
este
,a
este
Metoda optimala de determinare a celui mai mare element al unui arbore binar de cautare,
stiind ca acesta nu se afla in radacina arborelui, presupune ca:
R: plecand din radacina, sa se faca o parcurgere pe legatura dreapta pana la nivel de frunza
Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta si precizati ce
se va afisa pe ecran?
class Sir
{
int len;
char *p;
public:
Sir(char * s = NULL)
{
p = NULL;
len = 0;
if(s)
{
len = strlen(s);
p = new char[len+1];
strcpy_s(p, len+1, s);
}
}
~Sir(){ if (p) delete[] p; }
void Print(){ cout << p << endl; }
};
int main(int argc, _TCHAR* argv[])
{
Sir a("Programare in C++");
{
Sir b(a);
}
a.Print();
return 0;
}
Aplicatia liniara
egale cu:
este
R:
R: 1
Numarul maxim de comparari care se fac pentru determinarea existentei unei valori date, intrun arbore binar de cautare, este egal cu:
R: inaltimea arborelui
Vectorii
spatiului vectorial real
pentru:
R:
Fie A = (X, U) un arbore binar de cautare, unde X = {5, 7, 10, 21, 27, 39} reprezinta multimea
de noduri, si U multimea de arce. Sa se identifice U stiind ca radacina arborelui are valoarea
10, iar nodurile terminale sunt: 5, 21 si 39.
R: U = {(10, 7), (7, 5), (10, 27), (27, 21), (27, 39)}
void erase()=0;
void put(AbstractElem* ae){}
AbstractElem* get(){}
int isEmpty(){}
int isFull(){}
};
Care afirmatie este corecta:
R: AbstractList poate fi folosita ca o clasa de baza, in
derivare
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
~Baza(){ cout<<"B::~B()"<<endl;}
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza *s = new Derivat();
delete s;
return 0;
}
R: B::B()
D::D()
B::~B()
cout<<v1<<v2;
return 0;
}
R: u=(1,-1,-1)
Cifrele ce constituie CNP-ul dvs. sunt elementele unui vector cu lungimea data de numarul
cifrelor din CNP. Presupunem ca acest vector s-a obtinut prin linearizarea diagonala a unei
matrici superior k-diagonale cu n linii si n coloane. Sa se indice valoarea maxima pe care o
poate avea n, asa incat sa fie suficiente informatiile furnizate de vector pentru reconstituirea
integrala a matricii.
R: 13
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza metodele virtuale?
class Baza2
{
public:
Baza2(){ }
virtual void operator++() const { cout<<'1'; }
virtual void operator++(int) const { cout<<'2'; }
};
class Derivat2:public Baza2
{
public:
Derivat2(){ }
virtual void operator++() { cout<<'3'; }
virtual void operator++(int) { cout<<'4'; }
};
int main ()
{
Derivat2 d;
Baza2 &b = d;
b++;
++b;
cout<<endl;
return 0;
}
R: 21
Fie f, g, h, i functii binare, iar x, y, z, p, q variabile. Expresia f(i(x, y), g(h(z, p), q)) poate fi
reprezentata de arborele A = (X, U) cu X multimea de noduri, X = {f, g, h, i, x, y, z, p, q}, si U
multimea de arce. Sa se identifice U:
R: {{f, i}, {f, g}, {i, x}, {i, y}, {g, h}, {g, q}, {h, z}, {h, p}}
. Sa se precizeze pozitia
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
Baza(Baza &b){ cout<<"B::B(B&)"<<endl;}
~Baza(){ cout<<"B::~B()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza a;
Baza b = a;
Baza c(b);
return 0;
}
R: B::B()
B::B(B&)
B::B(B&)
vectorii:
NU formeaza o
R:
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza constructorii si destructorul?
class Baza2
{
public:
Baza2(){ Create(); }
virtual ~Baza2(){ Build(); }
void Build(){Create(); }
virtual void Create()
{
cout<< "B" ;
}
};
class Derivat2:public Baza2
{
public:
Derivat2(){ Create(); }
~Derivat2(){ Build(); }
virtual void Create()
{
cout<< "D";
}
};
int main (int argc, char* argv[])
{
Baza2 *p = new Derivat2();
delete p;
return 0;
}
R: BDDB
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza metodele virtuale?
class Baza2
{
public:
Baza2(){ }
virtual void operator++() const { cout<<'1'; }
virtual void operator++(int) { cout<<'2'; }
};
};
int main (int argc, char* argv[])
{
Baza2 *p = new Derivat2();
(*p)++;
++(*p);
delete p;
return 0;
}
R: 23
Analizati cu atentie urmatorul fragment de cod sursa. Precizati ce tip de eroare se produce si
ce se va afisa pe ecran?
class Error
{
public:
void Print(){ cout<<"0";}
};
class ImparError : public Error
{
public:
void Print(){ cout<<"1";}
};
class ParError : public Error
{
public:
void Print(){ cout<<"2";}
};
void f(int t)
{
if(t%2)
throw ImparError();
else
throw ParError();
}
int main()
{
try{
f(0);
f(1);
}
catch(ImparError &e)
{
e.Print();
}
catch(ParError &e)
{
e.Print();
}
catch(Error &e)
{
e.Print();
}
return 0;
}
R: 2
R:
Se considera vectorul ordonat v cu n = 8 elemente (v[1], ..., v[8]), format din numerele intregi:
10, 33, 49, 67, 85, 92, 107, 120. Pentru identificarea pozitiei unei valori date se foloseste
algoritmul cautarii binare prezentat mai jos:
iinf = 0, isup = n + 1, p = 0
cat timp p = 0 si isup iinf > 1
i = [(iinf + isup)/2]
daca v[i] = K
atunci p = i
altfel
daca v[i] < K
atunci iinf = i
altfel isup = i
daca p = 0
atunci valoare absenta
altfel valoare in pozitia p
Sa se indice de cate ori se aplica pasul cautarii pentru determinarea valorii 85.
R: 3
Care dintre urmatoarele activitati POT aparea simultan (vezi diagrama UML din figura)?
{
while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}
are ecuatia:
R:
Se numeste arbore binar complet un arbore binar in care fiecare nod, cu exceptia nodurilor
terminale, are exact doi descendenti, si toate nodurile terminale se afla pe acelasi nivel.
Numarul total de noduri ale unui arbore binar complet cu n noduri terminale este:
R: 2n - 1
Numarul arborilor binari de cautare care se pot construi cu nodurile distincte 29, 45, 111 este:
R: 5
este:
R:
este
Analizati cu atentie urmatorul fragment de cod sursa. Ce se va afisa pe ecran daca tinem
cont de ordinea in care se apeleaza metodele virtuale?
class Baza2
{
public:
Baza2(){ }
virtual void operator++() const { cout<<'1'; }
virtual void operator++(int) const { cout<<'2'; }
};
class Derivat2:public Baza2
{
public:
Derivat2(){ }
virtual void operator++() const { cout<<'3'; }
virtual void operator++(int) const { cout<<'4'; }
};
int main ()
{
Derivat2 d;
Baza2 &b = d;
b++;
++b;
return 0;
R: 43
In spatiul vectorial
R:
Fie U si V doua subspatii vectoriale oarecare ale unui spatiu vectorial real
Care din urmatoarele submultimi NU este un subspatiu vectorial:
R:
este o elipsa?
R:
Se considera lista:
i. when()
ii. if()
iii. close()
iv. after()
Care dintre aceste elemente sunt evenimente valide intr-o diagrama de stare din UML (alegeti
combinatia corecta)?
R: i si iv
R: 4
este o parabola?