Sunteți pe pagina 1din 7

Ministerul Educaiei i tiinei al Republicii Moldova Universitatea Tehnica din Moldova FCIM

la lucrarea de laborator nr.3

TEMA:Suprancrcarea operatorilor.

A efectuat: A "erificat:

st.gr TI-06 Malbas Mi!ai lector uni". #iorba $odica

#!i%inu &00'

(arianta )0 *+ S se cree,e clasa Bool "ariabile logice. S se defineasc operatorii -.- / SA0 logic1 -2- / 3I logic1 -4- / SA0 E5#60SI(1 ca func7ii prietene1 iar operatorii -88- %i -98- / ca :etode ale clasei. ;peratorii trebuie s per:it reali,area opera7iilor att cu "ariabilele clasei date1 ct %i cu "ariabilele de tip predefinit int. <=ac nu:rul ntreg este diferit de ,ero1 se consider c "ariabila este ade"r1 altfel / fals.+ b+ S se cree,e o clas Set / :ul7i:ea nu:erelor ntregi1 utili,nd :e:oria dina:ic. S se defineasc operatorii de lucru cu :ul7i:ile: -.- / uniunea1 -2- / intersec7ia1 --- scderea1 ca :etode ale clasei1 iar -.8- / nserarea unui nou ele:ent n :ul7i:e1 -88- / co:parare la egalitate1 %. a. ca func7ii prietene. S se defineasc operatorii ->>- %i -??-. S se defineasc func7ia de "erificare a apartenen7ei unui ele:ent la o :ul7i:e.

Listingul programului:
a+ @include >iostrea:.!? @include >conio.!? class Aool B public: int "alC Aool<int+C Aool operator 88 <AoolD+C Aool operator 98 <AoolD+C friend Aool operator . <AoolD1 AoolD+C friend Aool operator 2 <AoolD1 AoolD+C friend Aool operator 4 <AoolD1 AoolD+C EC Aool::Aool<int i+ B if <i880+ "al 8 0C else "al 8 )C E Aool Aool::operator 88 <AoolD b+ B if <b."al 88 t!is-?"al+ return )C else return 0C E Aool Aool::operator 98 <Aool Db+ B if <b."al 98 t!is-?"al+ return )C else return 0C E Aool operator . <AoolD b)1 AoolD b&+ B if <b)."al 980 FF b&."al980+ return )C else return 0C E Aool operator 2 <AoolD b)1 AoolD b&+ B if <b)."al 980 DD b&."al980+ return )C else return 0C E

Aool operator 4 <AoolD b)1 AoolD b&+ B if <b)."al 980 4 b&."al980+ return )C else return 0C E "oid :ain<+ B clrscr<+C Aool a 8 )C Aool b 8 0C int c8&C cout >>Afisarea re,ultatelor-C cout >>-Gna8->>a."alC cout >>-Gnb8->>b."alC cout >>-Gnc8->>cC cout >>-GnGn-C cout >>-a88b ->> <a88 b+."al >> - - >> endlC cout >>-a98b ->> <a98 b+."al >> - - >> endlC cout >>- a.b ->> <a . b+."al >> - - >> endlC cout >>- a2b ->> <a 2 b+."al >> - - >> endlC cout >>- a4b ->> <a 4 b+."al >> - - >> endlC cout >>-a98c ->> <a98 c+."al >> - - >> endlC getc!<+C E

$e,ultatele progra:ului.

b+ @include >conio.!? @include >:at!.!? @include >iostrea:.!? class set B int 2ptrC int di:C int isIn<int+C public: set<int+C set operator . <setD+C set operator 2 <setD+C set operator - <setD+C friend setD operator .8 <setD1 int+C friend int operator 88 <setD1 setD+C HHintoarce "aloare booleana <int+ friend ostrea:D operator >> <ostrea:D1 setD+C friend istrea:D operator ?? <istrea:D1 setD+C int cauta<int I+B int ,C cout>>-Gn introdu po,itia ele:entului:-C cin??,C for<int i80Ci>di:Ci..+ if<i88,-)+ cout>>- ele:. de pe po,itia ->>,>>- este ->>ptrJiKC E EC int set::isIn<int L+ B for<int i80Ci>di:Ci..+ if<L88ptrJiK+ return )C return 0C E set::set<int i+ B di: 8 iC ptr 8 neM intJdi:KC E set set::operator . <setD s+ B set ss 8 2t!isC for <int i 8 0C i>s.di:C i..+ if <9isIn<s.ptrJiK++ ss .8 s.ptrJiKC return ssC E set set::operator 2 <setD s+ B set ss 8 2t!isC int n 8 di:C HH sal"a: di:ensiunea... int2 neMptr 8 ptrC HH s!i pointerul "ec!i <ele:entele+ ss.di: 8 0C HH aloca: resurse noi :+ ss.ptr 8 N066C HH ..s!i aici tot for <int i80C i>nC i..+ if <s.isIn<neMptrJiK++ ss .8 neMptrJiKC HH daca ele:entul "ec!i <cel sal"at+ se contine s!i in s - il adauga: la locul nou. return ssC E

set set::operator - <setD s+ B set ss 8 2t!isC int n 8 di:C int2 neMptr 8 ptrC ss.di: 8 0C ss.ptr 8 N066C for <int i80C i>nC i..+ if <9s.isIn<neMptrJiK++ ss .8 neMptrJiKC return ssC E setD operator .8 <setD s1 int L+ B if <s.di: 88 0+ B s.ptr 8 neM intJ)KC s.di:..C s.ptrJ0K 8 LC return sC E int n 8 s.di:C int2 oldptr 8 s.ptrC s.di:..C s.ptr 8 neM intJs.di:KC for <int i 8 0C i>nC i..+ s.ptrJiK 8 oldptrJiKC s.ptrJnK 8 LC deleteJK oldptrC return sC E int operator 88 <setD s)1 setD s&+ B if <s).di: 98 s&.di:+ return 0C for <int i 8 0C i>s).di:C i..+ if <s).ptrJiK 98 s&.ptrJiK+ return 0C return )C E ostrea:D operator>><ostrea:D os1 setD s+ B for<int i80Ci>s.di:Ci..+ cout>>s.ptrJiK>>- -C cout>>endlC E istrea:D operator??<istrea:D1 setD s+ B cin??s.di:C cout>>-introdu ->>s.di:>>- nu:ere:->>endlC for <int i 8 0C i>s.di:C i..+ cin??s.ptrJiKC E "oid :ain<+ B clrscr<+C

int n1LC set a<)+1b<&+1c<n+C cout>>-introdu lungi:ea lui a:-C cin??aC cout>>-introdu lungi:ea lui b:-C cin??bC cout>>-Sirurile initiale:Gn-C cout>>-Gna: ->>aC cout>>-Gnb: ->>bC a.8'C b.8OC cout>>-GnInsera: cite un ele:ent in :ulti:e:Gn-C cout>>-Gna: ->>aC cout>>-Gnb: ->>bC cout>>-a.b:->>a.b>>endlC cout>>-a-b:->>a-b>>endlC cout>>-b-a:->>b-a>>endlC cout>>-a2b:->>a2b>>endlC c8aC cout>>-c8a:->>c>>endlC cout>>-Sirurile-C if<a88b+ cout>>- sunt egaleGn-C else cout>>- nu-s egaleGn-C getc!<+C clrscr<+C cout>>-Gn #autarea in sirul ):-C a.cauta<)+C cout>>-GnGn#autarea in sirul &:-C b.cauta<&+C getc!<+C E

$e,ultatele progra:ului

#onclu,ie:

n aceast lucrare de laborator am supra ncarcat operatorii indicai cu a!utorul "unciilor operator# Funciile operator le$am declarat atit ca membri ai clasei c t i ca "unii "riend# %upra ncrc nd operatorii in primul pro&ram am reali'at operatiile lo&ice ($sau e)clusiv* ++$i lo&ic* , , $sau lo&ic* n al doilea pro&ram am reali'at reuniunea* di"erenta* intersecia i alte operaii cu dou mulimi#

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