Construiti o aplicatie in care clasa OraCurenta care are ca variabile private
ora, minutele si secundele si metode publice de citire si afisare a orei. Adaugati o metoda friend prin care s a se poata copia continutul unui obiect OraCurenta intr-un alt obiect instanta a aceleiasi clase. #include<iostream> using namespace std; class OraCurenta{ int ora; int min; int sec; public: void set(int h,int m,int s) { ora=h; min=m; sec=s; } int get_ora() { return ora; } int get_min() { return min; } int get_sec() { return sec; } friend OraCurenta copiere(OraCurenta x); }; OraCurenta copiere(OraCurenta x) { OraCurenta hh,mm,ss; hh.ora=x.ora; mm.ora=x.min; ss.sec=x.sec; return x; } void main() { int h,m,s; cout<<"\n Ora: ";cin>>h; cout<<"\n Minute: ";cin>>m; cout<<"\n Secunde: ";cin>>s; OraCurenta ob; OraCurenta obi; ob.set(h,m,s); obi=copiere(ob); cout<<"\t Ora :"<<obi.get_ora()<<"\t Min : "<<obi.get_min()<<"\t Sec: "<<obi.get _sec()<<endl<<endl; } 2. Scrieti o aplicatie C/C++ in care clasa Calculator are un atribut privat memo rie_RAM si o functie prietena tehnician_service ce permite modificarea valorii unui atribut. Adaugati in clasa Calculator o variabila de tipul clasei Placa_de_baza care are o componenta denumire_procesor. Scrieti codu l necesar care permite functiei prietene tehnician_service sa modifice (schimbe) valoarea variabilei denumire_pr ocesor. #include <iostream> using namespace std; #include <string.h> class Placa_de_baza{ char denumire_procesor[20]; public: void set_denumire_procesor(char *de) { strcpy(denumire_procesor,de); } char* get_denumire_procesor() { return denumire_procesor; } }; class Calculator{ int memorie_RAM; public: Placa_de_baza ob; void set_memorie_RAM(int mr) { memorie_RAM=mr; } int get_memorie_RAM() { return memorie_RAM; } friend void tehnician_service(Calculator &a, char *s, int n=0); }; void tehnician_service(Calculator &calc,char *denumire,int mem_RAM) { if(mem_RAM!=0) calc.set_memorie_RAM(mem_RAM); calc.ob.set_denumire_procesor(denumire); } void main(void) { Calculator c; int n; char s[20]; cout<<"Dati denumirea procesorului: "; cin>>s; c.ob.set_denumire_procesor(s); cout<<"Dati memoria RAM: "; cin>>n; c.set_memorie_RAM(n); cout<<"Ati introdus urmatoarele date: "<< c.ob.get_denumire_procesor(); cout<<", "<<c.get_memorie_RAM()<<endl; cout<<endl; cout<<"Dati noua denumire a procesorului: "; cin>>s; cout<<"Dati noua valoare a memoriei RAM: "; cin>>n; tehnician_service(c,s); cout<<"\nNoile date introduse sunt: "<< c.ob.get_denumire_procesor(); cout<<", "<<c.get_memorie_RAM()<<endl; } 3. Definiti o clasa Repository care are doua variabile private de tip intreg. Cl asa mai contine un constructor explicit vid si unul cu 2 parametri, o metoda accesor care afiseaza variabilele din clasa. Scrieti o clasa numita Mathemathics, friend cu prima clasa, care implementeaza operatiile aritme tice elementare(+,-,*,/) asupra variabilelor din prima clasa. Fiecare metoda primeasca parametru un obiect al cl asei Repository. #include<iostream> using namespace std; class Repository{ int x; int y; public: Repository() { x=0; y=0; } Repository(int a,int b) { x=a; y=b; } int accesor_x() { return x; } int accesor_y() { return y; } friend class Mathemathics; void Afisare() { cout<<" a= "<<x<<" , "<<" b= "<<y<<"\n"; } }; class Mathemathics{ public: int suma(Repository a) { return a.x+a.y; } int diferenta(Repository a) { return (a.x-a.y); } int produs(Repository a) { return a.x*a.y; } float impartire(Repository a) { return (float)a.x/a.y; } }; void main() { int a,b; cout<<" a= ";cin>>a; cout<<" b= ";cin>>b; Repository ob(a,b); Mathemathics mate; ob.Afisare(); cout<<endl; cout<<"\n\t Adunare: "<<mate.suma(ob); cout<<"\n\t Scadere: "<<mate.diferenta(ob); cout<<"\n\t Inmultire: "<<mate.produs(ob); cout<<"\n\t Impartire: "<<mate.impartire(ob); cout<<endl; } 4. Scrieti o aplicatie C/C++ care intr-o clasa defineste variabila publica conto r var_static de tip static intreg. Aceasta se va incrementa in cadrul contructorului. Dupa o serie de insta ntieri, sa se afiseze numarul de obiecte create (continutul variabilei statice). #include <iostream> using namespace std; class Obiect { int valoare; public: static int var_static; Obiect(int v) { valoare = v; var_static++; } int get_valoare() { return valoare; } static int valoare_var_static() { return var_static; } }; int Obiect::var_static; void main() { Obiect ob1(10); cout<<" valoare: "<<ob1.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob2(11); cout<<" valoare: "<<ob2.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob3(12); cout<<" valoare: "<<ob3.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob4(13); cout<<" valoare: "<<ob4.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; cout<<"\n S-au instantiat "<<Obiect::valoare_var_static()<<" obiecte "<<endl<<en dl; } 5. Rezolvati problema 4 in cazul in care variabila statica este de tip privat. D efiniti o metoda accesor care returneaza valoarea contorului. #include <iostream> using namespace std; class Obiect { int valoare; static int var_static; public: Obiect(int v) { valoare = v; var_static++; } int get_valoare() { return valoare; } static int valoare_var_static() { return var_static; } }; int Obiect::var_static; void main() { Obiect ob1(3); cout<<" valoare: "<<ob1.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob2(4); cout<<" valoare: "<<ob2.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob3(19); cout<<" valoare: "<<ob3.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; Obiect ob4(39); cout<<" valoare: "<<ob4.get_valoare()<<endl; cout<<" val static: "<<Obiect::valoare_var_static()<<endl<<endl; }