Zdrojáky - objektové 3/5

#include <iostream>
using namespace std;


class Zlomok
{
private:
int citatel;
int menovatel;
static int pocet;

public:
void vypis() const
{
cout << this->citatel << "/" << this->menovatel << endl;
}
//konstruktory
Zlomok(int citat, int menov)
{
this -> citatel =citat;
this -> menovatel=menov;
cout << "Konstruktor zlomku" << this->citatel <<","<< this->menovatel<<endl;
cout << "Pocet objektov: "<< ++pocet << endl;
}

Zlomok(int x)
{
this->citatel=this->menovatel=x;
cout << "Pocet objektov: "<< ++pocet << endl;
}

Zlomok()
{
this -> citatel=1; this -> menovatel =2;
cout << "Pocet objektov: "<< ++pocet << endl;
}

int getcitatel() { return this -> citatel; }
void setcitatel(int ci) { this -> citatel = ci; }
//copy konstruktor
Zlomok(Zlomok &zzz)
{
this -> citatel = zzz.citatel;
this -> menovatel = zzz.menovatel;
cout << "copy konstruktor" << endl;
cout << "Pocet objektov: "<< ++pocet << endl;
}
//destruktor
~Zlomok()
{
cout << "destruktor zlomku " << this -> citatel <<"/"<< this -> menovatel << endl;
cout << "Pocet objektov: "<< --pocet << endl;
}

};

int Zlomok::pocet=0;

class TriedaX
{
public:
const Zlomok z;

TriedaX():z(3,2){}

};


void main()
{
Zlomok zz(1,8);
zz.setcitatel(5);
zz.vypis();

TriedaX tt;
tt.z.vypis();


}

#include <iostream>
using namespace std;

class melon
{
private:
int hmotnost;
static int celk_hmotnost;

public:
static int celk_pocet;

void display()
{
cout << "Hmotnost je: "<< this -> hmotnost << endl;
}

static void celk_display();

//konstruktor
melon(int h)
{
this -> hmotnost=h;
celk_hmotnost+=h;
celk_pocet++;
}

//destruktor
~melon()
{
celk_pocet--;
celk_hmotnost-=hmotnost;
}

};

int melon::celk_pocet=0;
int melon::celk_hmotnost=0;


void melon::celk_display()
{
cout << endl << endl << "Celkova hmotnost: " << celk_hmotnost << endl;
cout << endl << endl << "Celkovy pocet: "<< celk_pocet << endl;

}

void main()
{
int i;
melon cislo[5];

for(i=0;i<5;i++)
{
melon cislo[i](i+15);
}

for(i=0;i<5;i++)
{
cislo[i].display();
}


melon::celk_display();




}

#include <iostream>
using namespace std;


class Zlomok
{
private:
int citatel;
int menovatel;
static int pocet;

public:
void vypis() const
{
cout << this->citatel << "/" << this->menovatel << endl;
}
//konstruktory
Zlomok ()
{
citatel = menovatel +1;
}

Zlomok(int citat, int menov)
{
this -> citatel =citat;
this -> menovatel=menov;
cout << "Konstruktor zlomku" << this->citatel <<","<< this->menovatel<<endl;
cout << "Pocet objektov: "<< ++pocet << endl;
}

int getcitatel() { return this -> citatel; }
void setcitatel(int ci) { this -> citatel = ci; }
//copy konstruktor
Zlomok(Zlomok &zzz)
{
this -> citatel = zzz.citatel;
this -> menovatel = zzz.menovatel;
cout << "copy konstruktor" << endl;
cout << "Pocet objektov: "<< ++pocet << endl;
}
//destruktor
~Zlomok()
{
cout << "destruktor zlomku " << this -> citatel <<"/"<< this -> menovatel << endl;
cout << "Pocet objektov: "<< --pocet << endl;
}
// pretazenie operatorov
Zlomok operator = (Zlomok z) // =
{
citatel = z.citatel;
menovatel = z.menovatel;
return(*this);

}

Zlomok operator = (int i)
{
citatel = i;
menovatel = 1;
return(*this);
}

Zlomok operator += (Zlomok &z) // +=
{
citatel = this -> citatel * z.menovatel + z.citatel * this -> menovatel;
menovatel *= z.menovatel;
return (*this);
}
Zlomok operator -= (Zlomok &z) // -=
{
citatel = this -> citatel * z.menovatel - z.citatel * this -> menovatel;
menovatel *= z.menovatel;
return (*this);
}

Zlomok operator *= (Zlomok &z) // *=
{
citatel = this -> citatel * z.citatel;
menovatel *= z.menovatel;

}

Zlomok operator /= (Zlomok &z) // /=
{
citatel = this -> citatel * z.menovatel;
menovatel *= z.citatel;

}

friend Zlomok operator + (Zlomok x, Zlomok y);

friend ostream& operator << (ostream & s, Zlomok & z);
friend istream& operator >> (istream & s, Zlomok & z);

};

Zlomok operator + (Zlomok x, Zlomok y)
{
Zlomok v;
v.citatel = x.citatel * y.menovatel + y.citatel * x.menovatel;
v.menovatel = x.menovatel * y.menovatel;
return (v);

}

ostream& operator << (ostream & s, Zlomok & z);
{
if (z.menovatel != 1)
return (s << z.citatel <<'/' <<z.menovatel <<endl);
else
return(s << z.citatel<<endl);
}


istream& operator >> (istream & s, Zlomok & z);
{
char ret[10], ret1[10], ret2 [10];
int i=-1; j=0; k=0;
int pre=0;

cout<<"Citatel/menovatel&qu ot;<<ends;
s>>ret;
while(ret[++i]!='\0')
{
if((ret[i]!='/')&&!p re)
ret1[j++]=ret[i];
else
if(ret[i]=='/')
pre=1;
else
ret2[k++]=ret[i];

}

ret1[j]='\0';
ret2[k]='\0';

z.setcitatel (atoi(ret1));
z.setmenovatel (atoi(ret2));

}


int Zlomok::pocet=0;

void main()
{

Zlomok z1(1,2);
Zlomok z2 = z1;
z1.vypis();
z2.vypis();
operator + (z1,z2);


}