Powered by Neo
Proiectele programare in limbaje
evoluate
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.
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
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
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ă.
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
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
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.
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ă
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.
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
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.
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)
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ţă.
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
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.
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