Sunteți pe pagina 1din 7

Lucrarea nr.

Author: Ratiu Iulia


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

S-ar putea să vă placă și