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
Mihai Sprinceana / C++ / POO- Clasa concurs Moderat de Alric2rei, Conan, cosmy, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
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
   
Pagini: 1  

Mergi la