Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi!
Cititi regulament postare forum inainte de a posta!
|
Lista Forumurilor Pe Tematici
|
Mihai Sprinceana | Inregistrare | Login
POZE MIHAI SPRINCEANA
Nu sunteti logat.
|
Nou pe simpatie: christyna1993 la Simpatie.ro
 | Femeie 25 ani Bucuresti cauta Barbat 30 - 44 ani |
|
Conan
Moderator
 Inregistrat: acum 17 ani
Postari: 198
|
|
/*Definiti o anumita clasa in care avem declarati 3 tipuri de constructori (constructor implicit,constructor cu parametru,constructor de copiere), destructor,o functie inline, o functie friend care acceseaza un camp privat, de creat un tablou de obiecte,membrii statici si o functie statica si in plus folosirea pointerului this+sa folosim pointeri catre obiect*/
//Sa alegem o anumita clasa(cu numele concurs) si ne gandim la anumite date membru
#include<conio.h> //directiva foloseste in prog princip: clrscr() si getch() #include<iostream.h> //directiva contine cuvintele cheie cout si cin #include<assert.h>//foloseste cuv.cheie new(alocare-la constructori) si res- //pectiv delete(dealocare-la destructori) #include<string.h>//directiva ce foloseste functia de copiere a sirului strcpy // si respectiv functia de determinare a lungimii sirului strlen #define MAX 15 //directiva in care se definesc maxim 15 elemente
//definirea clasei cu numele concurs class concurs {char *nume,*prenume,*echipa;//componentele clasei-din zona privata (numite date membru) float salariu; static int nr;//numarul de obiecte instantiate public: //urmeaza membrii statici-zona publica-contine fctii,constr,destructori concurs(); //definirea constructorului implicit concurs(char *,char *,char *,float);//constructorul cu parametru concurs(concurs& ); //constructorul de copiere ~concurs(); //destructorul se defineste intotdeauna cu semnul ~ in fata void afisare();//functia de afisare void initializare();//functia de initializare friend void echipa(concurs& );//functia friend void pointer_this();//functia pt.pointer this care acceseaza un camp privat inline void sal();//functie inline de returnare a salariului static int getnr(); //functie membru };
//initializare variabila statica int concurs::nr=0;
//initializarea si definirea a nr.de obiecte a functiei membru int concurs::getnr() //::-se numeste operatorul de luare a domeniului { return nr; }
//definire constructor implicit concurs::concurs() { nume=new char[2]; //new-se numeste operator de alocare strcpy(nume," " ); prenume=new char[2]; strcpy(prenume," " ); echipa=new char[2]; strcpy(echipa," " ); salariu=0; }
//definire constructor cu parametru concurs::concurs(char *N,char *P,char *E,float S) { nume=new char[strlen(N)+1]; assert(nume!=0); strcpy(nume,N); prenume=new char[strlen(P)+1]; assert(prenume!=0); strcpy(prenume,P); echipa=new char[strlen(E)+1]; assert(echipa!=0); strcpy(echipa,E); salariu=S; }
//definire constructor de copiere concurs::concurs(concurs&X) //&-se numeste operatorul de adresare { nume=new char[strlen(X.nume)+1]; //X.nume-acceseaza campul nume assert(X.nume!=0); strcpy(nume,X.nume); prenume=new char[strlen(X.prenume)+1]; //X.prenume-acceseaza campul prenume assert(X.prenume!=0); strcpy(prenume,X.prenume); echipa=new char[strlen(X.echipa)+1]; //X.echipa-acceseaza campul echipa assert(X.echipa!=0); strcpy(echipa,X.echipa); salariu=X.salariu; //X.salariu-acceseaza campul salariu }
//definire destructor concurs::~concurs() { delete nume; //delete-se numeste operator de dealocare delete prenume; delete echipa; }
//functia de afisare void concurs::afisare() { cout<<"\nNume: "<<nume; //afiseaza campul nume cout<<"\nPrenume: "<<prenume; //afiseaza campul prenume cout<<"\nEchipa: "<<echipa; //afiseaza campul echipa cout<<"\nSalariu:"<<salariu; //afiseaza campul salariu }
//fctie friend care acceseaza un membru privat al clasei //de exemplu un membru privat al clasei este *echipa void echipa(concurs&X) {cout<<"\nAcces la campul echipa,membru privat al clasei concurs\n"; cout<<"Echipa este:"<<X.echipa; }
//folosirea pointerului this cu referire explicita la un anumit camp //de exemplu sa luam campul prenume
//pointer this-ma refer la campul prenume void concurs::pointer_this() {cout<<"\nAcces la campul prenume folosind pointerul this\n"; cout<<"\nX= "<<prenume<<"\nthis->X"<<this->prenume<<"\n(*this).X="<<(*this).prenume; }
//o functie inline-de returnare a salariului float sal() {float salariu; return salariu; }
//program principal void main() { clrscr(); concurs s("Nicorec","Nicusor","Rapid II",2500); //definirea obiectului concurs s1(s),s2;//s1(s) definire constructor de copiere concurs tab[10]; //definire tablou de obiecte avem 10 concurenti int i,n; cout<<"n="; //afisare n, <<(iesire pt.ca afisez)-se numeste operator de deplasare cin>>n; //citire n ,>>-operator de deplasare(intrare pt.ca citesc) /*for (i=0;i<n;i++) tab[i].initializare(); for (i=0;i<n;i++) tab[i].afisare();*/ echipa(s);//apel pentru functia friend care accesa campul echipa s.afisare(); //afisare a functiei friend cu acces la campul echipa getch(); }
|
|
pus acum 16 ani |
|
Conan
Moderator
 Inregistrat: acum 17 ani
Postari: 198
|
|
//O alta varianta pt.problema de mai sus-cerinta ramane aceeasi
#include <stdio.h> #include <conio.h> #include <math.h> #include <iostream.h> #include <assert.h> #include <string.h>
class salariat{ char *nume; char *prenume; char *firma; int vechime; float salariu; static int nr; public: salariat(); salariat(char*,char*,char*,int,float); salariat(salariat & ); ~salariat(); void afisare(); void initializare(); friend void acorda_prima(salariat & ); static int getnr(); };
int salariat::nr=0; int salariat::getnr() {return nr;} salariat::salariat() { nume=new char[2]; strcpy(nume," " ); prenume=new char[2]; strcpy(prenume," " ); firma=new char[2]; strcpy(firma," " ); vechime=0; salariu=0; }
salariat::salariat(char*n,char*p,char*f,int v,float s) {nume=new char[strlen(n)+1]; assert(n!=0); strcpy(nume,n); prenume=new char[strlen(p)+1]; assert(n!=0); strcpy(prenume,p); firma=new char[strlen(f)+1]; assert(n!=0); strcpy(firma,f); vechime=v; salariu=s; }
salariat::~salariat() {delete nume; delete prenume; delete firma; } salariat::salariat(salariat &x) { nume=new char[strlen(x.nume)+1]; assert(x.nume!=0); strcpy(nume,x.nume); prenume=new char[strlen(x.prenume)+1]; assert(x.prenume!=0); strcpy(prenume,x.prenume); firma=new char[strlen(x.firma)+1]; assert(x.firma!=0); strcpy(firma,x.firma);
vechime=x.vechime; salariu=x.salariu; }
void salariat::initializare() {char *n,*p,*f; int v; float s; cout<<"\n nume:"; cin>>n; nume=new char[strlen(n)+1]; // assert(n!=0); cout<<"\n prenume:"; cin>>p; strcpy(nume,n); prenume=new char[strlen(p)+1]; //assert(p!=0); cout<<"\n firma:"; cin>>f; strcpy(prenume,p); firma=new char[strlen(f)+1]; //assert(f!=0); strcpy(firma,f); cout<<"\n vechime="; cin>>v; vechime=v; cout<<"\n salariu="; cin>>s; salariu=s;
}
void salariat::afisare() { cout<<"\nnumele angajatului este:"<<nume; cout<<"\nprenumele angajatului este:"<<prenume; cout<<"\nfirma angajatului este:"<<firma; cout<<"\nvechimea angajatului"<<vechime; cout<<"\nsalariul angajatului"<<salariu; }
void acorda_prima(salariat &x) { if (x.vechime<3) x.salariu=x.salariu; else if (x.vechime<5) x.salariu=x.salariu+0.05*x.salariu; else x.salariu=x.salariu+0.1*x.salariu; }
void main(void) {salariat s("Mihaiu","Marian","IBM",8,7500); salariat tab[10]; salariat s1(s),s2; int i,n; cout<<"numarul de obiecte"; cin>>n; for (i=0;i<n;i++) tab[i].initializare(); for (i=0;i<n;i++) tab[i].afisare(); acorda_prima(s); s.afisare(); }
|
|
pus acum 16 ani |
|