 |
| Autor |
Mesaj |
Zappu
Administrator


Data inscrierii: 10/Noi/2007 Mesaje: 718 Localitate: Cluj |
|
lab 8 |
|
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 sa se poata replica 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 memorie_RAM si o functie prietena
tehnician_service ce îngăduie modificarea valorii unui atribut. Adaugati in clasa Calculator o variabila de
tipul clasei Placa_de_baza care are o componenta denumire_procesor. Scrieti codul necesar care permite functiei
prietene tehnician_service sa modifice (schimbe) valoarea variabilei denumire_procesor.
#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. Clasa 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 întâia clasa, care implementeaza operatiile aritmetice elementare(+,-,*,/) asupra
variabilelor din prima clasa. Fiecare metoda primeasca parametru un obiect al clasei 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 contor var_static de tip static
intreg. Aceasta se va incrementa in cadrul contructorului. Dupa o serie de instantieri, 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<<endl;
}
5. Rezolvati problema 4 in cazul in care variabila statica este de tip privat. Definiti 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;
}
_________________ Detinator MiniZone
www.zappdivercity.blogspot.com |
|
| 16/04/2014 00:24 |
|
 |
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
Powered by phpBB © 2001, 2005 phpBB Group Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
|
|
 |