Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "StdAfx.h"
#include <iostream>
#include <windows.h>
#include <string.h>
#include <fstream>
#include <string>
using namespace std;
class OBCH
{
public:
void Load(string Name);
void Save(string Name);
float Stoi(); // Вычесление стоимости
int GetVes();
float GetStoi();
void Init(int m,float s); // задание начальных значений полей
protected:
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);
}
void OBCH::Load(string Name)
{
ifstream fin; // файловый ввод
fin.open(Name.c_str()); // перевод в массив char
fin >> ves >> sto;
fin.close();
}
void OBCH::Save(string Name)
{
ofstream fout; // файловый вывод
fout.open(Name.c_str());
fout << sqrt(ves*ves+sto*sto);
fout.close();
}
class Mebel: public OBCH
{
public:
void Load(string Name); // перегрузка в производном классе
void Save(string Name);
char* GetNazvanie(); // возвращает строку с названием
void PutNazvanie(char *s); // задание Названия мебели
OBCH Best(); // выбрать из трёх результатов лучший и вернуть
void Init( char *f,int v1,float s1,int v2,float s2,int v3,float s3); // задание названия и значений ves,sto обеим результатам
private:
int d;
char Nazvanie[30]; // Название
OBCH FirstRezult; // первый результат
OBCH SecondRezult; // второй результат
OBCH FreeRezult; // третий результат
};
char* Mebel::GetNazvanie()
{
return Nazvanie;
}
void Mebel::PutNazvanie(char *s)
{
strcpy_s(Nazvanie,s);
}
void Mebel::Init( char *f,int v1,float s1,int v2,float s2,int v3,float s3)
{
strcpy_s(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;
}
void Mebel::Load(string Name)
{
ifstream fin;
fin.open(Name.c_str());
fin >> ves >> sto >> d;
fin.close();
}
void Mebel::Save(string Name)
{
Mebel::Save(Name); // вызов метода базового класса запись min,sec b закрытие файла
ofstream fout;
fout.open(Name.c_str()); // ios::app – режим дополнения дозапись dec
fout << sqrt(ves*ves+sto*sto+d*d);
fout.close();
}
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,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=S.Best();
nb=N.Best();
ssto=sb.Stoi(); // число секунд во времени pb (75)
nsto=nb.Stoi(); // число секунд во времени zb
if(ssto<nsto) // Что лучше
printf("S лучше\n");
else
printf("N лучше\n");
OBCH a;
a.Load("rec.txt");
a.Save("rec1.txt");
Mebel b;
b.Load("spr.txt");
b.Save("spr1.txt");
system("pause");
return 0;
}