Data: Problem A. Specificati si implementati modular un TAD VECTOR suficient de general astfel incat sa poata fi folosit pentru a retine toate informatiile necesare pentru rezolvarea urmatoarelor probleme. In fiecare problema se cere construirea a trei vectori vector ! va contine inf vector " ! va contine inf" vector # ! va contine inf# Intre vector si vector " e$ista o relatie de corespondenta% elementului inf de pe poz i din tabelul ii este asociat elementul inf" de pe poz i in vectorul ". Vectorul # contine inf# care grupeaza inf si inf". Se cere& . se da o informatie de tip inf si se cere sa se afiseze toate informatiile de tip " 'inf"( ) ". se da o informatie de tip inf" si se cere sa se afiseze toate informatiile de tip 'inf( ) A. folosind vector si vector" *. folosind vector # 'Se cer& .A) .*.) ".A) "%*)( +* ,. curs valutar inf ! nume moneda inf" ! valoare in lei inf# ! 'nume moneda%valoare in lei( 1) Problem specification Data: Preconditions: Results: Postconditions: Pentru construirea celor 3 vectori, se va defini, in partea de interfata (header) un vector generic, care contine valori de tipul void* e definesc aftfel tipurile t!pedef void* "aloare# t!pedef void* "aluta# $ompararea elementelor din table se face functii de tipul t!pedef int (*%un$mp)("aluta a, "aluta b)# %unctia de comparare este scrisa cu parametric generici, de tipul (void *) urmand ca tipurile specifice problemei sa fie implementate in main() &oate 'peratiile din partea de interfata vor fi descries folosind parametrii si valori returnate de tip (void *), urmand ca tipurile specifice problemei sa fie implementate in main() tructura unui tabel cu ambele tipuri de informatii (vector 3 ) va fi de forma: struct &abel ( int n# "aloare v)*+,# "aluta c)-++,# %un$mp functie$ompara# . tructura unui tabel cu informatie "aluta (vector - ) va fi de forma: struct &abel- ( int n# "aluta c)-++,# %un$mp functie$ompara# . tructura unui tabel cu informatie de tip "aloare (vector / ) va fi de forma: struct &abel/ ( int n# "aloare v)*+,# %un$mp functie$ompara# . 2) Design 2.a Structure diagram MainModule Creaza Insereaza Elimina Cauta Lungime e! "alue Distruge 2.b Specification of subalgorit#ms $unction %&$unCmp) %"aluta a' "aluta b) Description: $ompararea elementelor din vector Data:a,b Preconditions: a,b de tip valuta (cheia din tabel) Results: $heie sunt egale0 daca si numai daca (*f)(a, b) 11 +, 0a este mai mic decat b0 daca si numai daca (*f)(a, b) 2 +, respectiv 0a este mai mare decat b0 daca si numai daca (*f)(a, b) 3 +4 Postconditions (peration creaza%)abel* t' $unCmp f) Description: Creeaza un tabel +id. Data: t, f Preconditions: t de tip tabel Results: Postconditions: (peration insereaza%)abel t' "aluta c' "aloare +) Description: Include o perec#e in tabel. Daca in tabel e,ista c#eia c atunci se returneaza +aloarea asociata acestei c#ei inainte de apelul functiei' iar in caz contrar se returneaza -. Data: t, c, v Preconditions: Results: t1t5 ((c,v). Postconditions: (peration elimina%)abel t' "aluta c) Description: E,clude o perec#e din tabel. Daca e,ista c in tabel atunci se returneaza +aloarea + asociata c#eii si se efectueaza t . t / 0%c' +)1' iar in caz ca c nu e,ista in tabel se returneaza -. Data: t, c Preconditions: t de tip tabel, c de tip "aluta Results: t1t 6 ((c,v). Postconditions: (peration cauta%)abel t' "aluta c) Description: (btine +aloarea asociata unei c#ei. Daca e,ista o perec#e %c' +) in tabel atunci se returneaza +' iar in caz contrar se returneaza -. Data: t, c Preconditions: t de tip tabel, c de tip "aluta Results: v sau + Postconditions: (peration lungime%)abel t) Description: Lungimea unui tabel. 2eturneaza numarul perec#ilor din tabel Data: t Preconditions: Results: l6lungimea (nr de perechi din tabel) Postconditions: (peration 3e!%)abel t' int i) Description: 2eturneaza c#eia unei perec#i din tabel. Data: Preconditions: - 4. i 4 lungime%t) Results: Postconditions: c#eia perec#ii cu numarul de ordine i din t (peration +alue%)abel t' int i) Description: 2eturneaza +aloarea unei perec#i din dictionar Data: Preconditions: 5 - 4. i 4 lungime%t) Results: Postconditions: (peration distruge%)abel* d) Description: Distruge un tabel %elibereaza spatiul alocat). Data: Preconditions: Results: Postconditions: 6lgorit#ms (peration creaza%)abel* t' $unCmp fc) 0 t . ne7 )abelc8 t /9 n . -8 t /9 functieCompara . fc8 End/creeaza &: (peration insereaza%)abel t' "aluta c' "aloare +) 0 e,ists - .8 pentru i-% t /9 n e$ecuta if %t /9 functieCompara%t /9 c;i<' c)..-) e,ists . 18 return t/9+;i<8 end/if if %= e,ists)0 t/9+;t/9n<.+8 t/9c;t/9n<.c8 t/9n.t/9n>18 end/if return -8 End/insereaza (peration elimina%)abel t' "aluta c) 0 pentru i-% t /9 n e$ecuta if %t /9 functieCompara%t /9 c;i<' c)..-) :&daca rezultatul compararii e -&: "aloare + . t /9 +;i<8 t /9n//8 delete t /9 c;i<8 delete t /9 +;i<8 for %8 i 4 t /9 n8 i>>) 0 t /9 c;i< . t /9 c;i > 1<8 t /9 +;i< . t /9 +;i > 1<8 1 return +8 end/if return -8 1 :&& &: (peration cauta%)abel t' "aluta c) pentru i-% t /9 n e$ecuta if %t /9 functieCompara%t /9 c;i<' c)..- return t/9+;i<8
end/cauta int lungime%)abel t) return t/9n8 end/lungime (peration 3e!%)abel t' int i) return t/9c;i<8 end/3e!
(peration +alue%)abel t' int i) return t/9+;i<8 end/ +alue (peration distruge%)abel* t) pentru i-% t /9 n e$ecuta delete t /9 +;i<8 delete t /9 c;i<8 delete t8 end/distruge 6lgoritm "aluta 61 si 62 )abel t8 creaza%t' Compara"aluta)8 cin 99 n8 Moneda +aluta8 "al +aloare8 pentru i-% n e$ecuta cin 99+aluta8 cin 99+aloare8 c#ar &p) . ne7 Moneda8 strcp!%p)' +aluta)8 "al &p6 . ne7 "al8 &p6 .+aloare 8 insereaza%t' p)' p6)8 pentru /-% lungime%t) e$ecuta cout44?+aluta5 ?44%c#ar&)3e!%t'@)44? si "aloare5 ?44&%int&)+alue%t'@)44endl8 cin99+8 pentru 0-% lungime%t) e$ecuta if %&%int&)+alue%t'3)..+) cout44?+aluta5 ?44%c#ar&) 3e!%t'3)44endl8 Moneda c8 cin99c8 pentru /-% lungime%t) e$ecuta if %strcmp%%c#ar&)3e!%t'3)'c)) cout44?+aloarea ?44&%int&)+alue%t'3)44endl8 distruge%t)8 End/algoritm A) Implementation $55 Programm B) )esting Input (utput C.A "aluta. DeuroE "aloare.A "aluta. DdolarE "aloare.2 "aluta. Dlira sterlinaE "aloare.F
%DeuroE' A) %DdolarE' 2) %Dlira sterlinaE' F ) Valuta1 2euro3 Valoare1# Valoare14 Valuta13lira sterlina3