Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "StdAfx.h"
#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
class OBCH
{
public:
float Stoi(); // Вычесление стоимости
int GetVes();
float GetStoi();
void Init(int m,float s); // задание начальных значений полей
private:
int ves;
float sto;
};
int OBCH::GetVes(){
return ves;
}
float OBCH::GetStoi(){
return sto;
}
void OBCH::Init(int v,float s)
{
ves=v;
sto=s;
}
float OBCH::Stoi()
{
return (ves*sto);
}
class Mebel
{
public:
char* GetNazvanie(); // возвращает строку с названием
void PutNazvanie(char *s); // задание Названия мебели
Mebel(char *f,int v1,float s1,int v2,float s2,int v3,float s3); //конструктор с параметрами
Mebel(const Mebel &p); // копирующий конструктор
OBCH Best(); // выбрать из трёх результатов лучший и вернуть
void Init( char *f,int v1,float s1,int v2,float s2,int v3,float s3); // задание названия и значений ves,sto обеим результатам
private:
//char Nazvanie[30]; // Название
char *Nazvanie;
int God;
OBCH FirstRezult; // первый результат
OBCH SecondRezult; // второй результат
OBCH FreeRezult; // третий результат
};
char* Mebel::GetNazvanie()
{
return Nazvanie;
}
void Mebel::PutNazvanie(char *s)
{
strcpy(Nazvanie,s);
}
Mebel::Mebel(char *f,int v1,float s1,int v2,float s2,int v3,float s3)
{
Nazvanie=new char[20]; // выделение памяти для фамилии
strcpy(Nazvanie,f);
FirstRezult.Init(v1,s1); // FirstRezult.ves=v1 FirstRezult.sto=s1
SecondRezult.Init(v2,s2); // SecondRezult.ves=v2 SecondRezult.sto=s2
FreeRezult.Init(v3,s3);
}
Mebel::Mebel(const Mebel &p)
{
Nazvanie=p.Nazvanie; // присваивание указателя!! мелкое копирование
God=p.God;
}
void Mebel::Init( char *f,int v1,float s1,int v2,float s2,int v3,float s3)
{
strcpy(Nazvanie,f);
FirstRezult.Init(v1,s1); // FirstRezult.ves=v1 FirstRezult.sto=s1
SecondRezult.Init(v2,s2); // SecondRezult.ves=v2 SecondRezult.sto=s2
FreeRezult.Init(v3,s3); // SecondRezult.ves3=m3 SecondRezult.sto=s3
}
OBCH Mebel::Best()
{
float sto1,sto2,sto3; // секунды первого, второго и третьего результатов
sto1=FirstRezult.Stoi(); // вычисление числа стоимости 1 результата
sto2=SecondRezult.Stoi(); // вычисление числа стоимости 2 результата
sto3=FreeRezult.Stoi(); // вычисление числа стоимости 3 результата
if (sto1>sto2 || sto1>sto3)
return FirstRezult;
else if (sto2>sto1 || sto2>sto3)
return SecondRezult;
else
return FreeRezult;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian"); /*setlocale( LC_CTYPE, ".1251" ); */
OBCH a,b;
//Mebel F,S;
char c[30];
float P,L;
a.Init(250,4);
b.Init(250,2);
P=a.Stoi();
L=b.Stoi();
// тест для задания и получения фамилий спортсменов
/* F.PutNazvanie("First"); // фамилия у P ->First
strcpy_s(c,F.GetNazvanie());
printf("%s - %f",c,P); // вывод извлеченного названия Pu
printf("\n");
S.PutNazvanie("Second"); // название у Z ->Me
strcpy_s(c,S.GetNazvanie());
printf("%s - %f",c,L); // вывод извлеченного названия Me
printf("\n");*/
Mebel K("So",1,15,2,5,4,4);
Mebel K1=K; // конструктор копирования b: Иванова 1980
K.PutNazvanie("Петрова");
Mebel N("Na",3,5,1,40,1,2);
Mebel N1=N; // конструктор копирования b: Иванова 1980
N.PutNazvanie("Петрова");
// Mebel K,N;
OBCH sb,nb;
float ssto,nsto;
// K.Init("So",1,15,2,5,4,4);
// N.Init("Na",3,5,1,40,1,2);
sb=K.Best();
nb=N.Best();
ssto=sb.Stoi(); // число секунд во времени pb (75)
nsto=nb.Stoi(); // число секунд во времени zb
if(ssto<nsto) // Что лучше
printf("S лучше\n");
else
printf("N лучше\n");
system("pause");
return 0;
}