-, moy. moy N.
const N=3;
:
moy operator = (moy o1);
, - . , - . - , . moy. - set.
int operator == (moy o1);
. .. , strcmp. , 0 1.
moy operator + (moy o1);
operator+() moy , tr operator+() . , . tr .
+ , . , . , .
friend ostream & operator<< (ostream &stream, moy &o1);
ostream. , stream . . , stream, ostream. , << /.
friend istream & operator>> (istream &stream, moy &o1);
, istream, - . . - , .
, , -. , .
friend void shapka(void);
. <<
friend int isvalid (int a, int b);
, , . . .
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
|
|
#include <math.h>
#include <stdio.h>
#include <iomanip.h>
const N=3;
class moy {
char *veshestvo;
unsigned int nomer;
unsigned int temperatura;
float vyazkost;
friend ostream & operator<<(ostream &stream, moy &o1);
friend istream & operator>>(istream &stream, moy &o1);
friend void shapka(void);
friend void linebuild(void);
friend int isvalid(int a, int b);
public:
moy () { vyazkost =0; temperatura =0; nomer =0; *(veshestvo = new char[1])='\0';}
moy (char *a, unsigned int b, unsigned int c, float d);
void setall(char *a, unsigned int,unsigned int, float);
void getall(char *a, unsigned int b, unsigned int c, float d);
void showall(void);
moy operator = (moy o1);
int operator == (moy o1);
moy operator + (moy o1);
};
ostream & operator<<(ostream &stream, moy &o1) {
shapka();
stream<<"|"<<setw(15)<<o1.veshestvo<<" | ";
stream<<setw(9)<<o1. nomer <<"|";
stream<<setw(18)<<o1. temperatura <<" |";
stream<<setw(17)<<o1. vyazkost <<" |";
linebuild();
return stream;
}
istream & operator>>(istream &stream, moy &o1) {
cout<<"Veshestvo, Atomniyi nomer, Temperatura, Vyazkost: \n";
stream>>o1.veshestvo;
stream>>o1. nomer;
stream>>o1. temperatura;
stream>>o1. vyazkost;
return stream;
}
int isvalid(int a, int b){
if (((a>N-1) || (a<0)) || ((b>N-1) ||(b<0)))
{
cout<<" Oshibka! Ekzempliara s takim imenem ne syshestvyet.\n";
getch();
return -1;
}
else if (a==b)
{
cout<<" Oshibka! Ekzempliar ne mozet bit zapisan sam v sebya.\n";
getch();
return -2;
}
return 0;
}
moy moy::operator + (moy o1) {
moy tr;
int i,j;
delete[] tr.veshestvo;
tr.veshestvo =new char [strlen(veshestvo)+strlen(o1.veshestvo)+2];
strcpy(tr.veshestvo,veshestvo);
strcat(tr.veshestvo, o1.veshestvo);
tr. nomer = nomer +o1. nomer;
tr. temperatura = temperatura +o1. temperatura;
tr. vyazkost = vyazkost +o1. vyazkost;
return tr;
}
int moy::operator == (moy o1) {
if (temperatura!= o1. temperatura) {cout << " Dannie ekzempliari klassa ne ravni."; getch();}
else if (ceil(vyazkost)!=ceil(o1. vyazkost)) {cout << " Dannie ekzempliari klassa ne ravni."; getch();}
else if (strcmp(veshestvo,o1.veshestvo)!= 0) {cout << " Dannie ekzempliari klassa ne ravni."; getch();}
else if (nomer!= o1. nomer) {cout << " Dannie ekzempliari klassa ne ravni."; getch();}
else cout<<" Ekzemplyari klassa ravni."; getch();
return 0;
}
moy moy::operator = (moy o1) {
delete [] veshestvo;
veshestvo = new char [strlen(o1.veshestvo)+2];
if (!veshestvo) {
cout<<" Oshibka! Pamiat ne videlena.";
exit(1);
}
strcpy(veshestvo,o1.veshestvo);
nomer = o1. nomer;
temperatura = o1. temperatura;
vyazkost = o1. vyazkost;
return o1;
}
moy:: moy (char *a, unsigned int b, unsigned int c, float d) {
veshestvo=new char [strlen(a)+1];
strcpy(veshestvo,a);
nomer =b;
temperatura =c;
vyazkost =d;
}
void moy::setall(char *a, unsigned int b, unsigned int c, float d) {
|
|
strcpy(veshestvo,a);
nomer =b;
temperatura =c;
vyazkost =d;
}
void moy::showall(void) {
cout<< veshestvo <<" ";
cout<< nomer <<" ";
cout<< temperatura <<" ";
cout<< vyazkost <<" ";
}
void moy::getall(char * a, unsigned int b, unsigned int c, float d)
{
delete[] a;
a=new char [strlen(veshestvo)+1];
strcpy(a, veshestvo);
b= nomer;
c= temperatura;
d= vyazkost;
cout<<a<<" ";
cout<<b<<" ";
cout<<c<<" ";
cout<<d<<" ";
cout<<"\n";
}
void shapka(void)
{
cout<<"_____________________________________________\n";
cout<<"| Vyazkost metallov v ghidkom sostoyanii |\n";
cout<<"|---------------------------------------------------------------------------|\n";
cout<<"| Veshestvo | Atomniyi nomer | Temperatura | Vyazkost |\n";
cout<<"|---------------------------------------------------------------------------|\n";
}
void linebuild(void) {
cout<<"\n|--------------------------------------------------------------------------|\n";
}
int main(void) {
char *n;
unsigned int t;
unsigned int s;
float h;
short i,k;
unsigned int s1;
short q,q1;
moy obj[N]={ moy ("Alyuminiyi", 13,700,2.90),
moy ("Vismut", 83,304,1.65),
moy ("Svinec", 82,441,2.11)};
clrscr();
cout.precision(2);
cout<<" Veshestvo, Atomniyi nomer, Temperatura, Vyazkost: \n";
for (i=0; i<N; i++) {
obj[i].showall();
cout<<"\n";
}
cout<<"\nPeregryzka operatora prisvaivania '='.\n";
cout<<" Vvedite nomera ekzemplyarov klassa: zameniaimi b zameniashi >\n";
cin>>q;
cin>>q1;
if (isvalid(q, q1)!=0) exit(-1);
obj[q] = obj[q1];
cout<<" Veshestvo, Atomniyi nomer, Temperatura, Vyazkost: \n";
for(i=0; i<N; i++) {
obj[i].showall();
cout<<"\n";
}
cout<<"\nPeregryzka operatorov sootvetstviya '=='.\n";
cout<<" Vvedite nomera ekzemplyarov klassa, kotorie nyzhno sravnit >\n";
cin>>q;
cin>>q1;
if (isvalid(q, q1)!=0) exit(-1);
obj[q] == obj[q1];
cout<<"\nPeregryzka operatorov symmi '+'.\n";
cout<<" Vvedite nomera ekzemplyarov klassa, kotorie nyzhno slozhit >\n";
cin>>q;
cin>>q1;
moy temp;
if (isvalid(q, q1)!=0) exit(-1);
temp=obj[q]+obj[q1];
cout<<" Veshestvo, Atomniyi nomer, Temperatura, Vyazkost: ";
temp.getall(n,t,s,h);
cout<<"\nPeregryzka operatorov potovogo vvoda '>>'.";
cout<<"\nVvedite nomer ekzemplyara klassa: ";
cin>>q;
if ((q>N-1)||(q<0)) {cout<<" Oshibka! Ekzempliara s takim indeksom ne syshestvyet."; getch(); exit(-1);}
cin>>obj[q];
cout<<"\n Peregryzka operatorov potovogo vivoda '<<'.";
cout<<"\n Vvedite nomer ekzemplyara klassa: ";
cin>>q;
if ((q>N-1)||(q<0)) {cout<<" Oshibka! Ekzempliara s takim indeksom ne syshestvyet."; getch(); exit(-1);}
cout<<obj[q];
getch();
return 0;
}