Sunteți pe pagina 1din 10

/*1.

Sa se scrie o aplicatie C/C++ care foloseste o structura de date cu numele C


erc care contine
raza ca si o variabila de tip ntreg. ntr-un program C/C++, declarati doua variabil
e c1, c2 de
tip Cerc si calculati aria si circumferinta lor pentru valori ale razei introdus
e de la tastatura cu
doua metode definite. Aceleasi cerinte vor fi implementate ntr-o aplicatie folosi
nd o clasa
numita Cerc cu atributul raza privat, clasa ce va contine pe lnga metodele de cal
cul ale ariei
si perimetrului un constructor explicit cu parametru, un destructor si o metoda
de afisare raza.
Extindeti aplicatia astfel nct sa definiti mai multe obiecte de tip Cerc la care s
a accesati
metodele specifice folosind obiectele instantiate, pointeri la obiecte, referint
e la obiecte.*/
#include<iostream>
using namespace std;
class Cerc{
private:
int Raza;
public:
Cerc(int);
void Afisare(void);
float Aria(void);
float Perimetru(void);
~Cerc(void);
};
Cerc::Cerc(int r)//definirea cosntructorului implicit
{
Raza=r;
}
Cerc::~Cerc(void)
{
Raza=0;
}
void Cerc::Afisare(void)//fct membra pt afisare
{
cout<<"Raza cercului este : "<<Raza<<endl;
}
float Cerc::Aria(void)//fct membra pt calculul ariei
{
return(3.1416*Raza*Raza);
}
float Cerc::Perimetru(void)//fct membra pt calculul circumferintei
{
return(2*3.1416*Raza);
}
void main(void)
{
Cerc c1(5),*c2,&c3=c1;//initializarea unui obiect, a unui pointer de la
obiect si o referinta
c2=&c1;
cout<<"\nRaza cu care a fost initializat obiectul este:";
c1.Afisare();
cout<<"\nAria cercului este:"<<c1.Aria();
cout<<"\nCircumferinta cercului este:"<<c1.Perimetru();
cout<<endl;
cout<<"\nAcelasi lucru cu pointeri:";
cout<<"\nRaza cercului este:";
c2->Afisare();
cout<<"\nAria cercului este:"<<c2->Aria();
cout<<"\nCircumferinta cercului este:"<<c2->Perimetru();
cout<<endl;
cout<<"\nAcelasi lucru cu referinta:";
cout<<"\nAria cercului este:";
c3.Afisare();
cout<<"\nAria cercului:"<<c3.Aria();
cout<<"\nCircumferinta cercului:"<<c3.Perimetru();
cout<<endl;
}
/*3.Sa se defineasca o clasa numita String (intr-un fisier numit strClass.h) car
e sa fie compusa din
functiile specifice care efectueaza urmatoarele operatii pe siruri de caractere:
- determina lungimea sirului primit pe intrare;
- determina ultima pozitie de aparitie a unui anumit caracter din sirul de intra
re;
- returneaza sirul primit pe intrare, scris cu caractere majuscule;
- returneaza sirul primit pe intrare, scris cu caractere minuscule;
- returneaza numarul de aparitii ale unui anumit caracter din sirul primit;*/
#include<iostream>
using namespace std;
#include<string.h>
class String{
private:
char *sir;
int DIM;
public:
String(void);
~String(void);
void Init(void);//fct pt initializarea sirului
int Len(void);//fct pt det lungimii
int Ultim(int,char);//fct pt det ultimei pozitii pe care apare un caract
er c
void Afisare(int);//afisare cu majuscule
void afisare(int);//afisare cu minuscule
int Aparitii(int,char);//fct pt determinarea nr de aparitii a unu caract
er c
};
String::String(void)//constructor ce aloca memorie pt 50 caractere
{
DIM=50;
sir=new char[DIM];
}
String::~String(void)
{
delete []sir;
}
void String::Init(void)
{
cout<<"\nIntroduceti sirul:";
cin>>sir;
}
int String::Len(void)
{
int k;
k=strlen(sir);
return(k);
}
int String::Ultim(int n, char c)
{
int i,poz;
for(i=0;i<n;i++)
{
if(sir[i]==c)
poz=i+1;
}
return(poz);
}
void String::Afisare(int n)
{
int i;
for(i=0;i<n;i++)
cout<<(char)toupper(sir[i]);
}
void String::afisare(int n)
{
int i;
for(i=0;i<n;i++)
cout<<(char)tolower(sir[i]);
}
int String::Aparitii(int n, char c)
{
int i,k=0;
for(i=0;i<n;i++)
{
if(sir[i]==c)
k++;
}
return(k);
}
void main(void)
{
String s1;
int n;
s1.Init();
n=s1.Len();
cout<<"\nLungimea sirului introdus este:"<<n;
cout<<"\nSirul introdus este(cu majuscule):";
s1.Afisare(n);
cout<<"\nSirul introdus este(cu minuscule):";
s1.afisare(n);
cout<<"\nUltima pozitie pe care apare caracterul a este:"<<s1.Ultim(n,'a
');
cout<<"\nNumarul de aparitii a caracterului a este:"<<s1.Aparitii(n,'a')
;
}
/*4. Sa se scrie programul care citeste de la tastatura un sir de maxim 10 carac
tere si care, pe baza
clasei implementate anterior, efectueaza asupra sirului de intrare operatiile de
finite n cadrul
clasei.*/
#include<iostream>
using namespace std;
#include<string.h>
class String{
private:
char *sir;
int DIM;
public:
String(void);
~String(void);
void Init(void);//fct pt initializarea sirului
int Len(void);//fct pt det lungimii
int Ultim(int,char);//fct pt det ultimei pozitii pe care apare un caract
er c
void Afisare(int);//afisare cu majuscule
void afisare(int);//afisare cu minuscule
int Aparitii(int,char);//fct pt determinarea nr de aparitii a unu caract
er c
};
String::String(void)//constructor ce aloca memorie pt 50 caractere
{
DIM=50;
sir=new char[DIM];
}
String::~String(void)
{
delete []sir;
}
void String::Init(void)
{
int i;
char buff[60];
cout<<"\nIntroduceti sirul:";
cin>>buff;
strncpy(sir,buff,10);
sir[10]='\0';
}
int String::Len(void)
{
int k;
k=strlen(sir);
return(k);
}
int String::Ultim(int n, char c)
{
int i,poz;
for(i=0;i<n;i++)
{
if(sir[i]==c)
poz=i+1;
}
return(poz);
}
void String::Afisare(int n)
{
int i;
for(i=0;i<n;i++)
cout<<(char)toupper(sir[i]);
}
void String::afisare(int n)
{
int i;
for(i=0;i<n;i++)
cout<<(char)tolower(sir[i]);
}
int String::Aparitii(int n, char c)
{
int i,k=0;
for(i=0;i<n;i++)
{
if(sir[i]==c)
k++;
}
return(k);
}
void main(void)
{
String s1;
int n;
s1.Init();
n=s1.Len();
cout<<"\nLungimea sirului introdus este:"<<n;
cout<<"\nSirul introdus este(cu majuscule):";
s1.Afisare(n);
cout<<"\nSirul introdus este(cu minuscule):";
s1.afisare(n);
cout<<"\nUltima pozitie pe care apare caracterul a este:"<<s1.Ultim(n,'a
');
cout<<"\nNumarul de aparitii a caracterului a este:"<<s1.Aparitii(n,'a')
;
}
/*5. Sa se scrie programul care implementeaza clasa Suma si care, n cadrul functi
ei main, declara
un obiect de tipul clasei si apoi un pointer la acesta, prin intermediul carora
se va afisa pe
ecran rezultatul adunarii a doua numere preluate de la tastatura. ncercati implem
entarea
functiei suma n cadrul clasei si n exteriorul acesteia.*/
#include<iostream>
using namespace std;
class Suma{
public:
int Suma1(int,int);//functie definita ulterior
int Suma2(int a,int b)//functie definita in clasa
{
return(a+b);
}
};
int Suma::Suma1(int a, int b)
{
return(a+b);
}
void main(void)
{
Suma n,*p;
p=NULL;
int a,b;
cout<<"\na:";
cin>>a;
cout<<"\nb:";
cin>>b;
cout<<"\nFolosind Suma1 a+b="<<n.Suma1(a,b);
cout<<"\nFolosind Suma2 si pointer spre tipul clasei a+b="<<p->Suma2(a,b
);
cout<<endl;
}
/*6. Sa se defineasca o clasa care implementeaza functiile:
- int plus(int x, int y), care returneaza suma valorilor primite la apelul metod
ei;
- int minus(int x, int y), care returneaza diferenta valorilor primite la apelul
metodei;
- int inmultit(int x, int y), care returneaza produsul valorilor primite la apel
ul metodei;
- int impartit(int x, int y), care returneaza catul impartirii valorilor primite
la apelul metodei;
si apoi sa se scrie aplicatia care utilizeaza aceasta clasa.*/
#include<iostream>
using namespace std;
class Operatii{
public:
int plus(int x, int y)
{
return(x+y);
}
int minus(int x, int y)
{
return(x-y);
}
int inmultit(int x, int y)
{
return(x*y);
}
int impartit(int x, int y)
{
if(y==0)
{
cout<<"\nImpartirea nu se poate efecuta!";
exit(-1);
}
else
return(x/y);
}
};
void main(void)
{
Operatii *p;
p=NULL;
int x, y;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
cout<<"\nSuma celor 2 numere este:"<<p->plus(x,y);
cout<<"\nDiferenta dintre cele 2 numere este:"<<p->minus(x,y);
cout<<"\nProdusul dintre cele 2 numere este:"<<p->inmultit(x,y);
cout<<"\nCatul impartirii dintre cele 2 numere este:"<<p->impartit(x,y);
cout<<endl;
}
/*7.Sa se creeze o clasa care sa modeleze numerele complexe. Scrieti un program
care utilizeaza
aceasta clasa.*/
#include<iostream>
using namespace std;
#include<math.h>
class Complex{
private:
int a;
int b;
public:
Complex();
Complex(int , int );
void Set_values(int , int);
void Afisare(void);
float Modul(void);
Complex Suma(Complex);
};
Complex::Complex()
{
a=1;
b=1;
}
Complex::Complex(int ia, int ib)
{
a=ia;
b=ib;
}
void Complex::Set_values(int ia, int ib)
{
a=ia;
b=ib;
}
void Complex::Afisare(void)
{
cout<<"\nNumarul complex este:\t"<<a<<"+j"<<b<<"\t";
}
float Complex::Modul(void)
{
return(sqrt((float)(a*a)+(float)(b*b)));
}
Complex Complex::Suma(Complex z2)
{
Complex z3;
z3.a=a+z2.a;
z3.b=b+z2.b;
return(z3);
}
void main(void)
{
Complex z1,z2(2,2),z3;
cout<<"\nNumarul complex implicit z1 e:";
z1.Afisare();
cout<<"\nModulul numarului complex implicit este:"<<z1.Modul();
z1.Set_values(3,5);
cout<<"\nNumarul complex z1 cu numere oarecare e:";
z1.Afisare();
cout<<"\nModulul numarului complec oarecare este:"<<z1.Modul();
cout<<"\nNumarul complex z2:";
z2.Afisare();
z3=z1.Suma(z2);
cout<<"\nSuma celor doua numere complexe este:";
z3.Afisare();
}

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