Sunteți pe pagina 1din 6

1.

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;
}

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