Sunteți pe pagina 1din 10

/*1.

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


care contine
raza ca si o variabila de tip ntreg. ntr-un program C/C++, declarati doua
variabile c1, c2 de
tip Cerc si calculati aria si circumferinta lor pentru valori ale razei introduse
de la tastatura cu
doua metode definite. Aceleasi cerinte vor fi implementate ntr-o aplicatie
folosind o clasa
numita Cerc cu atributul raza privat, clasa ce va contine pe lnga metodele de
calcul 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
sa accesati
metodele specifice folosind obiectele instantiate, pointeri la obiecte, referinte
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;

/*2.Sa se defineasca o clasa numita myString (intr-un fisier numit strClass.h) care
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 intrare;
- 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 caracter 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 caracter 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');

/*3. Sa se scrie programul care citeste de la tastatura un sir de maxim 10


caractere si care, pe baza
clasei implementate anterior, efectueaza asupra sirului de intrare operatiile
definite 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 caracter 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 caracter 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');

}
/*4. Sa se scrie programul care implementeaza clasa Suma si care, n cadrul
functiei 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
implementarea
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;
}

/*5. Sa se defineasca o clasa care implementeaza functiile:


- int plus(int x, int y), care returneaza suma valorilor primite la apelul metodei;
- 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 apelul
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;
}
/*6.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