Powered by Neo

 

Proiectele programare in limbaje evoluate

 

 

 

Bilet 1 – Clasa string

1.      Să se construiască clasa String, conţinând:

-          un pointer la şirul stocat în memorie dinamică (şi eventual lungimea şirului)

-         constructori de clasă şi de copiere

-         destructor

-         supraîncărcări pentru operatorii:

·        ! test de şir vid

·        + concatenare cu obţinerea unui şir nou , pornind de la două şiruri, şir cu char, şir cu char [ ],  char [ ]cu şir ( funcţie friend!);

·        += concatenare (la un şir existent) de şir cu char sau de şir cu char [ ]

·        [ ] pentru referirea unui caracter din şir sub forma s[3] = 'a' sau c = s[3];

·        == != şi alte comparaţii între şiruri

·        <<  şi  >> pentru intrări - ieşiri la nivel de şir de pe fişiere standard şi de pe disc

·        (char)String, cast către char, prin furnizarea primului caracter din şir

-         funcţia membră abrev( ) pentru obţinerea unei prescurtări standard a şirului, prin căutare într-o tabelă de prescurtări posibile, structurată pe clase.

 

Bilet 2 – Clasa template vector

1.      Să se construiască clasa template Vector , conţinând:

-          un pointer la vectorul stocat în memorie dinamică şi numărul de elemente

-         constructori de clasă şi de copiere

-         destructor

-         supraîncărcări pentru operatorii:

·        ! test de vector vid;

·        + concatenare a doi vectori ;

·        += concatenare a doi vectori , de vector cu un element sau de vector cu tip [ ]

·        [ ] pentru referirea unui element din vector

·        == != şi alte comparaţii între şiruri

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de vector,  pe fişiere standard şi de pe disc

·        (tip)Vector, cast către tip, prin furnizarea primului element din vector

-         funcţii membre:

·        sort( bool ( *) ( ) ) pentru sortarea vectorului după o direcţie primită ca pointer de funcţie

·        regr_lin(Vector &, Vector &, double &, double &) pentru regresie liniară, pornind de la doi vectori de observaţii

 Să se testeze clasa pentru două tipuri de date fundamentale.

 

Bilet 3 – Clasa template vector (alta)

1.      Să se construiască clasa template Vector, conţinând:

-          un pointer la vectorul stocat în memorie dinamică şi numărul de elemente

-         constructori de clasă şi de copiere

-         destructor

-         supraîncărcări pentru operatorii <<  şi  >> pentru operaţii de intrare - ieşire la nivel de vector,  pe fişiere standard şi pe disc

-         o funcţie membră sort( bool ( *) ( ) ) pentru sortarea vectorului după o direcţie primită ca pointer de funcţie

 

Definiţi clasa persoana pentru a permite folosirea facilităţilor clasei template Vector pentru obiecte de tip persoana.

 

Bilet 4 – Clasa contbancar

1.      Să se construiască clasa ContBancar conţinând:

-          număr, titular, parola, valuta şi sold

-         constructori de clasă pentru obţinerea unui obiect

·         din date elementare

·        prin introducerea datelor de la terminal, fără ecou pentru parolă

·        din fişierul "banca.dat",   numărul contului dat de la terminal fiind cheia de căutare în fişier

-         destructor, care să asigure salvarea automată a contului în fişierul "banca.dat"

-         supraîncărcări pentru operatorii

·        = pentru a transfera o sumă dintr-un cont în alt cont nou, cu eventuale conversii valutare

·        + pentru transfer simultan din mai multe conturi într-un cont destinaţie

·        += pentru a transfera o sumă dintr-un cont în alt cont, cumulând  soldurile a mai multor conturi

·        += pentru a depune o sumă în cont

·        -= pentru a retrage o sumă din cont

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        ! test de sold zero

-         funcţiile depun() şi retrag(),  pentru depunere/retragere sumă din cont, bonificare dobândă

-         funcţia spune_total() pentru a furniza total solduri, în conturile existente, convertite în lei

 

Bilet 5 – Clasa polinom

1.      Să se construiască clasa Polinom conţinând:

-          lista în memorie dinamică, a termenilor, sub forma coeficient-grad, sortată descrescător după grad

-         constructori de clasă pentru obţinerea unui obiect

·         dintr-un număr variabil de perechi (coeficient, grad), folosind funcţii cu număr variabil de argumente

·        prin introducerea datelor de la terminal

-         destructor

-         supraîncărcări pentru operatorii

·        -- pentru derivare formală şi ++ pentru integrare formală

·        operator(double) pentru calculul valorii polinomului într-un punct

·        + ,-,* ,/ şi % pentru adunare, scădere, înmulţire, împărţire şi restul împărţirii a două polinoame

·        + pentru adăugarea unui nou termen şi - pentru eliminarea unui termen

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        ! test de polinom nul

-         funcţiile:

·         integ(double,double) - integrare numerică, pe un interval folosind operatorii ++ şi ()

·        deriv(double) - evaluarea derivatei într-un punct, folosind operatorii -- şi ()

·        cmMdc() şi cmmmc() a două polinoame folosind operatorii / şi *

·        rad(double,double) - determinarea unei rădăcini dintr-un interval dat

 

Bilet 6 – Clasa bigint

1.      Clasa BigInt pentru operaţii cu numere întregi mari, cu semn, conţine:

-         numărul memorat ca text (literele aferente cifrelor numărului), în memoria dinamică sau sub forma signed char cifra[NR_MAX_CIFRE], adică fiecare cifră e memorată pe un întreg mic (bait)

-         constructori de clasă pentru obţinerea unui obiect

·         dintr-un număr întreg obişnuit sau dintr-un şir de caractere

·        prin introducere de la terminal

-         destructor

-         supraîncărcări pentru operatorii:

·        +,-,*, /, %, -- şi ++ cu semnificaţiile cunoscute, dar operând între obiecte BigInt, între BigInt cu int sau int cu BigInt

 (operanzii unari onorează diferit pre sau postfixarea)

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        <,<=,>,>=,!=,== pentru comparaţii între BigInt, sau BigInt cu int, sau int cu BigInt

·        ! test de zero

 

Se va testa viteza de execuţie a calculelor pentru cele două tipuri de reprezentări, alegându-se cea mai performantă.

 

Bilet 7 – Clasa matrice

1.       Clasa Matrice pentru operaţii matriceale conţine:

-         nr. de linii şi de coloane

-         elementele memorate pe linie şi un vector de pointeri la linii

-         constructori de clasă pentru obţinerea unui obiect

·         iniţializat cu zero:  Matrice( int, int)

·        preluând datele dintr-un fişier:  Matrice( char *)

·        prin introducere de la terminal: Matrice()

-         destructor

-         Supraîncărcări de operatori:

·        [ ] pentru a permite adresarea unui element sub forma m[i][j]

·        +,-,*, / pentru operaţii dintre matrici, sau de matrici cu numere

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        (double)Matrice, cast prin obţinerea determinantului

-         funcţiile:

·        unu() şi zero()  pentru generarea matricelor unitate şi zero

·        transpunere, inversare

·        determinare valorilor proprii

·        rezolvarea matriceală a sistemelor de ecuaţii liniare

 

Bilet 8 – Clasa index carte

1.      Clasa template INDEX ca vector de max. 1000 obiecte, indexate după o cheie alfanumerică. Indexul conţine cheia şi poziţia în fişier a obiectului şi se păstrează sortat pentru a asigura regăsirea rapidă, prin căutare binară.

Se va testa şablonul de clasă pe clasa Carte, pentru a realiza evidenţa şi regăsirea cărţilor după ISBN, autor, titlu, editură, anul apariţiei, cuvinte cheie, folosind mai mulţi indecşi liniari sortaţi.

 

-         Constructorii de clasă vor permite obţinerea unui obiect dintr-un fişier, iar destructorul va asigura salvarea în fişier a cărţilor adăugate într-o sesiune de lucru.

 

-         Supraîncărcări pentru operatorii:

·        +,- pentru adăugare/ştergere carte din bibliotecă

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect şi a indexului în totalitate

 

-         Se vor scrie funcţii pentru regăsirea cărţilor:

·        apărute într-un interval de timp

·        scrise de acelaşi autor

·        după condiţii compuse cu SI, SAU pe cuvinte cheie

 

Bilet 9 – Clasa lista student

1.      Clasa Lista,  pentru evidenţa  activităţilor cu studenţii, este o listă de obiecte Student. Adăugarea şi ştergerea din listă se fac cu operatorii + şi -, iar lista este recunoscută de operatorii de intrare-ieşire <<  şi  >>.

 

Clasa Student conţine la rândul ei: nume_stud, nr_matricol, an_studiu, note.

-         constructorii de clasă Student asigură obţinerea unui obiect:

·        din date elementare

·        prin introducere de la terminal

·        prin citirea datelor dintr-un fişier, nr_matricol fiind cheia de regăsire

-         destructorul asigură salvarea obiectelor în fişier, exceptând obiectele create temporar, pentru necesităţi de programare

-         supraîncărcări în clasa Student pentru operatorii:

·        ++ promovarea în anul de studiu următor

·         <<  şi  >> pentru operaţii de intrare - ieşire la nivel de student

·        s<<n adăugarea notei n studentului s

·        (float)s cast pentru calculul mediei unui student; (char*)s cast pentru extragerea numelui unui student

 

-         Se va elabora funcţia clasificare() care ordonează studenţii pe ani de studii, descrescător după media notelor.

 

Bilet 10 – Clasa angajat

1.      Clasele Angajat, AngajatCuZiua şi AngajatInAcord, pentru exemplificarea conceptelor:

·        moştenire prin derivare

·        ascunderea unor informaţii moştenite şi a unor operatori

·        virtualizarea funcţiilor CalculSalariu() ( plata în funcţie de numărul de zile lucrate, sau de numărul de piese executate)

 

-         supraîncărcări pentru operatorii:

·        +,- pentru premiere/reţinere din salariu a unei sume de bani

·        cast pentru conversie Angajat în int (virsta), long (salariu), char * (nume)

·        +,- pentru adunare/scădere de obiecte ( salariu )

·        ++p şi p++, pre/post incrementare vechime şi vârsta, simultan

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        [ ] pentru regăsiri rapide în liste, pe baza CNP (cod numeric personal), marcă, nume

 

-         funcţii membre:

·         print( ), pentru afişare obiecte, care în versiunea din obiect derivat apelează şi print() din obiectul de bază

 

Bilet 11 – Clasa arbore

1.      Clasa ArboreBinar ca arbore binar de căutare, construit din obiecte de tip Nod, stocate în memorie dinamică;

-         conţine adresa primului nod;

-         supraîncărcări pentru operatorii:

·        arb+nod,  arb-nod pentru adăugare/ ştergere nod

·        <<  şi  >> pentru operaţii de salvare - restaurare în / din fişier, la nivel de ArboreBinar (arborele se salvează în SRD şi se reconstruieşte de jos în sus)

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect Nod

·        arb[nod ] pentru căutarea unui nod în arbore; fiecare nod recunoaşte la rândul lui, operatorii relaţionali, bazaţi pe un câmp cheie specific ( ex. cuvint, pentru o serie de frecvenţă conţinând char cuvint[ 50] şi int frecventa).

-         funcţii membre:

·        SRD(), RSD(), SDR() pentru traversarea arborelui

·        sFrunza(Nod), numara_nod( arb), print(arb);

 

Folosiţi clasa de mai sus pentru a număra cuvintele distincte dintr-un text.

 

Bilet 12 – Clasa figura geometrica

1.      Clasa Fig_Geom pentru manipularea figurilor geometrice, în general.

-         Clasa conţine:

·        numărul de puncte ce definesc figura geometrică

·        un vector de obiecte Punct, în succesiunea de desenare a figurii, ultimul punct fiind legat automat de primul

-         Funcţii membre pentru:

·         calculul perimetrului şi ariei

·         aflarea unui dreptunghi ce încadrează figura

·        desenarea pe ecran, într-o ferestră de coordonate date

·        scalarea

-         Din clasa Fig_Geom se vor deriva clasele Cerc, Dreptunghi (Patrat), Triunghi, Trapez, scriind funcţii virtuale care adaptează metodele la fiecare tip de figură, în parte.

-         Se vor scrie supraîncărcări pentru operatorii:

·        +,- pentru adăugarea/eliminarea unui punct la o figură

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        cast din Cerc în Patrat, prin determinarea pătratului ce încadrează cercul

·        & pentru determinarea suprafeţei comune la două figuri

·        | pentru determinarea suprafeţei totale ocupată de două figuri, ce au şi o porţiune comună

·        f1- f2 pentru determinarea suprafeţei ocupată de figura f1, mai puţin aria ocupată de figura f2.

 

Bilet 13 – Clasa statistica

1.      Clasa Statist pentru facilitarea prelucrărilor statistice uzuale: media, dispersia, coeficient de variaţie, abatere medie pătratică

-         conţine o matrice de observaţie ( nivelul unor indicatori, pe un număr de ani ) şi este compusă din:

·        un întreg nLin,  numărul de linii ce fac obiectul observării

·        vector cu nLin pointeri de obiecte de tip Linie

·        vector de pointeri la metodele enumerate mai sus; vector de pointeri la char, cu denumirile metodelor

-         permite supraîncărcări pentru operatorii:

·        +,- pentru adăugarea / eliminarea unei linii  la/de la o matrice cu dimensiuni corespunzătoare

·        +,- pentru adăugarea / eliminarea unei metode

·        S<=n  şi S>= n pentru deplasarea stânga/dreapta, cu n poziţii, a unei linii  (interschimb)

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de matrice, exprimate prin operatorii echivalenţi de la nivel de linie

 

-         Un obiect  Linie corespunde observaţiilor unui indicator şi este compus din:

·        pointer la char, denumirea liniei (indicatorului)

·        un întreg (nCol ), indicând numele de observaţii

·        un pointer de double spre valorile alocate dinamic

·        stare (activată / dezactivată) ( un indicator dezactivat nu mai participă la calcule statistice )

-         Operatorii recunoscuţi:

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de linie

·        ++ şi -- pentru activarea /dezactivarea liniei

·        ! - comutarea din starea curentă în starea opusă

 

Bilet 14 – Clasa data calendaristica

1.      Să se definească o clasă Data pentru gestiunea unor operaţii privind data calendaristică, conţinând:

-          trei întregi: zi, luna, an

-         funcţii de afişare sub diverse formate ( ex. 12/01/99, 31/12/2001, miercuri 5 noiembrie 1988, etc.)

-         constructori:

·        pornind de la trei întregi, validând încadrarea în intervalele posibile (1-28/29/30/31 pentru zi, 1-12 pentru lună, 1900-2100 pentru an)

·        pornind de la data furnizată de sistem

-         supraîncărcări pentru operatorii:

·        +, - pentru avansare/dat înapoi data cu un număr de zile

·        +, - pentru avansare/dat înapoi data cu un număr de zile lucrătoare(eventual dat ca float)

·        ++d, d++ pentru pre-/postincrementare; --d, d-- pentru pre-/postdecrementare;

·        <<  şi  >> pentru operaţii de intrare - ieşire Data

·        d1- d2, pentru determinarea numărului de zile cuprinse între două date

-         funcţiile (în majoritate folosite şi de supraîncărcările de  operatori):

·         isAnBisect(), ( an%400==0 || an%100!=0 && an%4==0 )

·         isSfirsitLuna(),isInceputLuna()test dacă o zi este ultima / prima din lună

·        isSarbatoare(), test de sărbătoare legală ( sâmbătă, duminică, 1 mai, 1, 25 şi 26 decembrie)

Testaţi clasa pentru a afla data întoarcerii din concediu (dat în zile lucrătoare), data bonificării lunare a unei dobânzi ( prima zi lucrătoare după trecerea lunii)

 

Bilet 15 – Clasa agenda telefonica

1.      Clasele Agenda_telef  ce permite regăsirea rapidă a unor informaţii pornind de la nume, număr de telefon, locaţie, subşir din nume etc.

-          Clasa constă dintr-o serie de liste sortate, de pointeri de obiecte persoana, organizate după chei de căutare diferite (  L_nume, L_nr, L_locatie ).

 

-         Se va defini o clasă template lista, care implementează inserări, ştergeri, căutări. Clasa template va fi invocată apoi pentru tipul cheilor de căutare ( char * şi int ).

 

-         supraîncărcări pentru operatorii:

·        +, -  <<  şi  >> pentru inserări, ştergeri din listă

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiecte

·        [ ] pentru căutare în listă după o cheie de tip generic <T>

-         funcţiile:

 bool containing( nume, subsir) pentru a facilita căutarea după un subşir din nume ( folosind eventual strstr ( ) ).

 

Bilet 16 – Clasa proiect activitate

1.      Clasa Proiect se compune din mai multe obiecte Activitate după modelul unui graf.

-         clasa Activitate conţine:

·        cod, denumire, durata, un vector de coduri activităţi direct precedente

·        timp minim şi maxim de începere (calculate din proiect )

 

-         constructorul clasei Proiect crează o matrice de adiacenţă ( a[s][d] =1, dacă activitatea s condiţionează activitatea d şi 0 în rest)

-         supraîncărcări pentru operatorii:

·        +,-  inserare/ştergere activitate din proiect

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect Activitate

·        <<  şi  >> pentru salvare/restaurare proiect în/din fişier

-         funcţii:

·        drum() determinarea drumului critic şi a duratei minime a proiectului

·         gantt() pentru afişarea graficului Gantt asociat proiectului

·        print() pentru afişarea timpului minim şi maxim de începere şi a timpului minim şi maxim de terminare pentru fiecare activitate

·        isConditionatDe( ), test dacă o activitate este condiţionată direct sau indirect, de o alta

 

Bilet 17 – Clasa multime

1.      Clasa template Multime, ca mulţime generică de elemente de tip generic Element şi care conţine:

·        cardinalul mulţimii;

·        pointer la primul Element

·        funcţie de sortare, adaptabilă de la un tip de element la altul, presupunând că fiecare Element recunoaşte operatori relaţionali specifici.

 

-         supraîncărcări pentru operatorii:

·        +,-, *  pentru reuniune, diferenţă simetrică, intersecţie ( când operează între două mulţimi)

·        | & sau || && sunt folosiţi ca alternativă pentru reuniune, respectiv intersecţie de mulţimi

·        +,-, * între Multime şi Element, cu semnificaţia de adăugare/extragere element din mulţime, respectiv test de apartenenţă a unui element la mulţime

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect

·        m1 < m2, dacă m1 este inclusă în m2

           

Testaţi clasa pentru o mulţime de numere.

Particularizaţi pentru o mulţime de persoane. La ierarhizarea persoanelor se alege vârsta pentru persoanele între 18 - 35 ani şi salariu, în rest.

 

Bilet 18 – Clasa fractie

 

1.      Clasa Fracţieconţinând:

·        doi întregi (nr -numărător şi nm -numitor), cu semn doar la numărător şi test de numitor nenul (fracţia devine MAX_INT/1, dacă se furnizează constructorului numitor 0)

-         Constructori:

·         pornind de la doi întregi, cu semnul pus la oricare;

·        pornind de la un întreg, căruia îi pune numitorul 1

·        pornind de la un float sau double, pe care îl scrie ca fracţie (ex. 0.125 devine 1/8)

·         constructor implicit, generând fracţia 0/1

-         supraîncărcări pentru operatorii:

·        +,-,/,* reflectând operaţiile uzuale cu fracţii şi folosind cmMdc(a,b) şi cmmmc(a,b)

·        <<  şi  >> pentru operaţiile de intrare ( citire doi întregi) şi ieşire (afişare sub forma -a/b) la nivel de obiect

·        <,<=,>,>=,!=,== pentru comparaţii între fracţii

·        cast pentru conversii de fracţii în int şi în float sau double;

-         funcţiile:

·        simplifica(), amplifica(), reduce() ca simplificare cu cmMdc(a,b)

 

Bilet 19 – Clasa timp

1.      Să se definească o clasă Timp pentru gestiunea unor operaţii privind timpul, conţinând:

-          trei întregi: ora, min, sec

-         funcţii de afişare sub diverse formate ( ex. 15/01/59, 10:12:20 PM, 07:12:20 AM etc.) a timpului local sau a celui din principalele oraşe (zone) ale lumii

-         constructori:

·        pornind de la trei întregi, validând încadrarea în intervalele posibile (0-60 pentru min şi sec, 0-24 pentru oră

·        pornind de la timpul furnizat de sistem

-         supraîncărcări pentru operatorii:

·        +, - pentru avansare/dat înapoi ceasul cu un număr de minute

·        +, - pentru avansare/dat înapoi ceasul cu un număr de ore : min : sec

·        ++d, d++ pentru pre-/postincrementare cu un minut;  --d, d-- pentru pre-/postdecrementare cu un minut;

·        <<  şi  >> pentru operaţii de intrare - ieşire Timp

·        t1- t2, pentru determinarea numărului de minute cuprinse între două momente

-         funcţiile (în majoritate folosite şi de supraîncărcările de  operatori):

·        decalaj() pentru decalaj orar între două oraşe, de pe fuse orare diferite 

·         fuse() pentru afişarea principalelor fuse orare, relativ la GMT ( vezi ComboBox din Windows)

Testaţi clasa pentru a studia durata execuţiei unor porţiuni din program, folosind cronometre, care prin destructor afişează durata lor de viaţă.

 

Bilet 20 – Clasa complex

1.      Să se definească o clasă Complex pentru operaţii cu numere complexe, conţinând:

·        double Re, double Im -partea reală şi cea imaginară;

·        bool Format (0 în format algebric, 1 în format trigonometric)

-         constructori:

·        cu doi parametri ( impliciţi 0), întregi, sau float, sau double;

·        cu trei parametri: formatul,  partea reală şi partea imaginară.

-         supraîncărcări pentru operatorii:

·        +, -, *,/ cu semnificaţiile lor uzuale

·        cast spre double, pentru furnizarea modulului numărului complex;

·        ~z - conjugatul numărului complex; ! z - modulul numărului complex;

·        <<  şi  >> pentru operaţii de intrare - ieşire Complex în format algebric

-         funcţiile (folosite şi de supraîncărcările de  operatori):

·        abs(z)  pentru determinarea modulului numărului complex;

·        arg(z) pentru determinarea argumentului numărului complex;

·         trig(z) pentru conversia în format trigonometric; alg(z) pentru conversia în format algebric.

·        print(z) pentru afişare în format trigonometric: r(cos t + i sin t)

 

Testaţi clasa pentru a rezolva ecuaţii de gradul II, în mulţimea numerelor complexe

 

Bilet 21 – Clasele Profesor, Disciplina, An_studiu

1.      Construiţi clasele Profesor, Disciplina, An_studiu. Stabiliţi o modalitate prin care obiectele acestor clase sunt puse în relaţii M-M (mulţi la mulţi, adică un profesor predă mai multe discipline, aceeaşi disciplină este predată de mai mulţi profesori, un an de studiu are în programa de stiudiu mai multe discipline etc…)

 

-         Specializaţi operatorii pentru:

·        actualizarea facilă a acestor legături

·        salvarea / restaurarea obiectelor în / din fişier

 

 

-         Elaboraţi funcţii pentru:

·        verificarea repartizării  tuturor disciplinelor

·        alcătuirea normei fiecărui profesor

afişarea normei fiecărui professor

 

Bilet 22 – Clasa arbore binar

1.      Clasa ArboreBinar ca arbore binar de căutare, stocat în vector de obiecte de tip Nod;

-         conţine int n - nr. de noduri; Nod v[NMAX], vectorul de maxim NMAX  elemente

-         supraîncărcări pentru operatorii:

·        +,- adăugare/ ştergere nod

·        <<  şi  >> pentru operaţii de intrare - ieşire secvenţiale, din fişier, la nivel de ArboreBinar

·        <<  şi  >> pentru operaţii de intrare - ieşire la nivel de obiect Nod

·        ! pentru test de arbore vid

·        arb[nod ] pentru căutarea unui nod în arbore; fiecare nod recunoaşte la rândul lui, operatorii relaţionali, bazaţi pe un câmp cheie specific ( ex. nivel indicator, pentru o serie de frecvenţă conţinând int nivel_ind şi int frecventa).

-         funcţiile:

·        SRD( ), RSD( ), SDR( ) pentru traversarea arborelui

·        isFrunza(Nod)

 

Folosiţi clasa de mai sus pentru a agrega o serie statistică de frecvenţe

 

Bilet 25 – Clasa fisier + pozitie

Să se realizeze clasele template Fişier şi Pozitie, care coopereză pentru a  lucra cu fişierul după principiul vectorului:

 f[2] = ob2; – scrierea articolului 2;       ob1= f[1]; - citirea articolului 1.

Clasa Fişier conţine:

-         pointerul la structură FILE prin care sistemul gestionează fişierul

-         constructor de clasă ce deschide un fişier R/W, după nume

-         destructor care închide fişierul

-         supraîncărcare pentru [] pentru referirea ca Pozitie, a unui articol din fişier, cu poziţionare efectivă

-         indicator şi metodă pentru testarea sfârşitului de fişier

Clasa Pozitie conţine:

-         referinţa la un obiect Fişier

-         constructor de clasă ce memorează referinţa la un obiect Fişier

-         supraîncărcări pentru:

·        operator =( T )   – scriere în fişier la poziţia curentă

·        operator ( T )  – cast din Pozitie spre tip generic T, materializat printr-o citire din fişier, de la poziţia curentă

Să se testeze clasele create, folosind articole de tip int, Pers şi Material.

 

Bilet 26 – Clasa matrice rara

Să se realizeze clasa MatriceRara, conţinînd:

-         trei vectori, pentru stocarea liniei, coloanei şi respectiv, valoarii unui element

-         număr de elemente încărcate în matrice

-         constructori de clasă şi de copiere

-         destructor

-         supraîncărcări pentru operatorii:

·        += şi -= pentru adăugarea / eliminarea unui triplet;

·        * pentru înmulţirea matricei cu un vector de dimensiune compatibilă cu matricea

·        +, -, * pentru operaţiile aritmetice corespunzătoare între două obiecte MatriceRara cu dimensiuni compatibile

·        = pentru atribuire

·        <<  şi  >> pentru intrări - ieşiri din fişiere standard

·        [] pentru referirea unui element

-         metode

·        Nr_linii( ) şi Nr_coloane( ) pentru determinarea dimensiunilor matricei

Grad( ) calculul gradului de umplere a matricei rare

Videoclipuri Comice Download
Cea mai bogata colectie de filmulete interesante de pe net.