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