- •Математический факультет
- •Содержание
- •Virtual float Get_Price();//виртуальный метод получения цены 12
- •1. Постановка задачи
- •Delete p; delete k;
- •///Cup and spoon
- •Delete l;
- •Scanf("%d",&flag);
- •///Mug and spoon
- •Delete l;
- •Delete f; delete m;
- •///Common volume for mug and cup
- •Delete p; delete m;
- •///Mug and spoon and d_spoon
- •Delete q; delete l; delete m;
- •Delete Tab;
- •Delete X;
Delete p; delete m;
P=NULL;
M=NULL;
}
///Mug and spoon and d_spoon
if(flag==3)
{
M=new Cup(10,5.5,'K',err);
Spoon *L=new Spoon(M,10.0,'Y',7.5,err);
D_Spoon *Q=new D_Spoon(12.4,M,3.2,'B',8.3,err);
printf(" __________________________________________\n");
printf("| |\n");
printf("| RECEIVING AREA SPOONS: %12f |\n",Q->Spoon_Plosh());
printf("| |\n");
printf("| VOLUME DESIGN: %12f |\n",Q->Vol_Design(Q));
printf("| |\n");
printf("| SPOON GET PRICE: %12f |\n",Q->Spoon_GetPrice());
printf("| |\n");
printf("| FINISH PRICE SPOONS: %12f |\n",Q->Finish_Price(Q));
printf("|__________________________________________|\n\n");
Delete q; delete l; delete m;
Q=NULL;
L=NULL;
M=NULL;
}
if(flag==4)
{
M=new Mug(10,5.5,'B',err);
Spoon *L=new Spoon(M,10.0,'Y',7.5,err);
D_Spoon *Q=new D_Spoon(7.4,M,2.8,'B',5.6,err);
printf(" _________________________________________\n");
printf("| |\n");
printf("| RECEIVING AREA SPOONS: %12f |\n",Q->Spoon_Plosh());
printf("| |\n");
printf("| VOLUME DESIGN: %12f |\n",Q->Vol_Design(Q));
printf("| |\n");
printf("| SPOON GET PRICE: %12f |\n",Q->Spoon_GetPrice());
printf("| |\n");
printf("| FINISH PRICE SPOONS: %12f |\n",Q->Finish_Price(Q));
printf("|_________________________________________|\n\n");
delete Q;
delete L;
delete M;
Q=NULL;
L=NULL;
M=NULL;
}
///KONSTRUCTOR NUMBER 3 FOR CUP AND MUG
if(flag==6)
{
Cup *X;
X=new Cup(27,1.1,'R',err);
Cup *Tab=new Cup(X,err);
X->Cup_Get(colvo2,rad,colCH);
printf(" _______________________________\n");
printf("| |\n");
printf("| COLVO=%12d |\n",colvo2);
printf("| VOL= %12f |\n",rad);
printf("| COLOR=%12c |\n",colCH);
printf("|_______________________________|\n\n");
Delete Tab;
Tab=NULL;
Delete X;
X=NULL;
Mug *E=new Mug(15,40.56,'B',err);
Mug *Z=new Mug(E,err);
E->Mug_Get(colvo,vol,colKR);
printf(" ________________________________\n");
printf("| |\n");
printf("| COLVO=%12d |\n",colvo);
printf("| VOL= %12f |\n",vol);
printf("| COLOR=%12c |\n",colKR);
printf("|________________________________|\n\n");
//delete Z;
//Z=NULL;
delete E;
E=NULL;
}
///EXIT
if(flag==0)
{
key=0;
}
}
printf("KOSTROMIN D.A GROUP NUMBER M-113\n");
return 0;
}
1.h
#include <stdio.h>
class Crockery//посуда
{
public:
Crockery();
virtual float Get_Price()=0;
virtual Crockery *Copy()=0;
virtual ~Crockery();
};
class Cup:public Crockery//чашка
{
private:
int* colvo;//количество
double *rad;//радиус
char *colCH;//цвет
public:
Cup(int,double,char,int&);///+
Cup(double,char,int&);
//Cup(){printf("EMPY CONSTRUCTOR CUP WORKED WELL\n");}
Cup(Cup*,int&);
~Cup(){printf("DESTRUCTOR CUP WORKED WELL\n"); delete colvo; delete rad; delete colCH;}
virtual float Get_Price();//цена за товар///+
Crockery *Copy();///+
void Cup_Set(int,double,char);///+
void Cup_Get(int&,double&,char&);///+
double Cup_Vol();//получение объема
char Cup_Color(){return (*colCH);}//получение цвета чашки
};
class Mug:public Crockery//кружка
{
public:
Mug(int,float,char,int&);///+
Mug(float,int&);
//Mug(){printf("EMPY KONSTRUCTOR MUG WORKED WELL\n");}
Mug(Mug*,int&);
~Mug(){printf("DESTRUCTOR MUG WORKED WELL\n"); delete colvo; delete vol; delete colKR;}
virtual float Get_Price();///+
Crockery *Copy();///+
void Mug_Get(int&,float&,char&);///+
void Mug_Set(int,float,char);///+
float Mug_FPrice();//получение первой цены
double M_and_C_VOL(Cup*);//получение обема чашки и кружки когда они вместе
private:
Cup *J;
int *colvo;
float *vol;
char *colKR;
};
class Spoon//ложка
{
public:
Spoon(Crockery* ,float,char,double,int&);
~Spoon(){printf("DESTRUCTOR Spoon WORKED WELL\n");delete f; delete Len; delete colLJ; delete OC;}
float Spoon_GetPrice(){return f->Get_Price()*((*Len)+(*OC));}//получение полной цены одной ложки
float Spoon_Plosh(){return (*Len)*(*OC);}//площадь ложки, для находения объема ложки с узором
private:
Crockery *f;
float *Len;//длина рукояди
char *colLJ;//цвет ложки
double *OC;// основная часть
};
class D_Spoon:public Spoon//узор ложки
{
public:
D_Spoon(float Vl,Crockery *fl,float Lenl,char colLJl,double OCl,int &err):Spoon(fl,Lenl,colLJl,OCl,err)
{
printf("D_SPOON::D_SPOON\n");
if(Vl>0 and Lenl>0 and OCl>0)
{
V=new float;
*V=Vl;
err=0;
}
else
{
delete this;
err=1;
}
}
~D_Spoon(){printf("DESTRUCTOR D_SPOON WORKED WELL\n");delete V;}
float Finish_Price(Spoon* T){return T->Spoon_GetPrice()+Vol_Design(T);}//цена ложки с узором
float Vol_Design(Spoon* T){return T->Spoon_Plosh()+(*V);}//объем ложки с узором
private:
Spoon* T;
float *V;//объем узора
};
3.4
Результаты
