МУ_ДЗ_2014 (1079920), страница 36
Текст из файла (страница 36)
cout << "Параметры: "<< endl;
int iH, Etag , Men , Apart ;
HomeType Type;
Temp.getParam(iH , Etag, Men, Type , Apart);
cout << "Номер -" << iH <<
" Этажей -" << Etag << " Жителей -" << Men << endl;
if (Type == fast)
cout << "Тип дома - простой ";
if (Type == multiple)
cout << "Тип дома - много строений ";
if (Type == complex)
cout << "Тип дома - сложный ";
cout << " Число квартир - " << Apart << endl;
Temp.printOn(cout);
Temp.setParam(1,2,3,fast, 5 );
Temp.printOn(cout);
Temp.setAllParam("Аптека", "10/8 кв.3", 11,12,13,fast, 15 );
Temp.printOn(cout);
}
////////////////////////////////////////
break;
case 3:
cout << endl << "3.Конструкторы Street " << endl;
{
Street S1;
Street S2("Лениский проспект");
Street S3("Ленин","Лениский проспект");
Street S4(5);
Street S5("Горького ул." , 7);
Home H5("ДЭЗ", "д.5", 5,2,3);
Home H6("Жилой", "д.6", 6,2,3, fast);
Home H7("Магазин", "д.7", 7,2,3, multiple , 5);
S5.Add( (CObject *)&H5);
S5.Add( (CObject *)&H6);
S5.Add( (CObject *)&H7);
S5.printOn(cout);
S1.printOn(cout);
S2.printOn(cout);
S3.printOn(cout);
S4.printOn(cout);
S5.printOn(cout);
//
S5.RemoveAt(1);
S5.printOn(cout);
///////////////////////////////
Street S6(S5);
S6.printOn(cout);
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Home H4("ДЭЗ", "д.4а", 4,2);
Home HNew("Сарай","д.10/12", 7,2,3, fast , 5);
Street SNew("Улица" , 15);
SNew.printOn(cout);
SNew.Add((CObject *)&HNew);
SNew.Add((CObject *)&H2);
SNew.Add((CObject *)&H3);
SNew.Add((CObject *)&H4);
SNew.printOn(cout);
cout << endl << "******* Конструктор копии *********" << endl;
Street SCopy(SNew);
SCopy.printOn(cout);
cout << endl << "******* Перегрузка присваивания *********" << endl;
Street SEmpty("Пусто!!" , 15);
SEmpty.printOn(cout);
SEmpty = SCopy;
SEmpty.printOn(cout);
// МЕТОД add
Street Shead("Улица Head" , 15);
Shead.add(&HNew , head);
Shead.add(&H2 , head);
Shead.add(&H3 , head);
Shead.add(&H4 , head);
Shead.printOn(cout);
///
Shead.del( head);
Shead.printOn(cout);
Shead.del( tail);
Shead.printOn(cout);
Shead.del( Number , 1);
Shead.printOn(cout);
};
break;
case 4:
cout << endl << "4.Методы Street " << endl;
{
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Home H4("ДЭЗ", "д.4а", 4,2);
Street Astreet("Добавление head", 20);
Astreet.printOn(cout);
cout << endl << "******* Добавление head *********" << endl;
Astreet.add(&H2 , head);
Astreet.add(&H3 , head);
Astreet.add(&H4 , head);
Astreet.printOn(cout);
Home H5("Жилой","д.2", 7,2,3, fast , 5);
Home H6("Магазин", "д.3", 3);
Home H7("ДЭЗ", "д.4а", 4,2);
cout << endl << "******* Добавление tail err *********" << endl;
Street Dstreet("Добавление tail ", 20);
Dstreet.add(&H5 , tail);
Dstreet.add(&H6 , tail);
Dstreet.add(&H7 , tail);
Dstreet.printOn(cout);
cout << endl << "******* Добавление NUM 2 *********" << endl;
Home H8("Жилой 3","д.2", 70,20,30, fast , 50);
Home H9("Магазин 3", "д.3", 3);
Home H10("ДЭЗ 3", "д.4а", 4,2);
Dstreet.add(&H8 , Number, 2);
Dstreet.add(&H9 , Number, 2);
Dstreet.add(&H10 , Number, 2);
Dstreet.printOn(cout);
cout << endl << "******* Удаление *********" << endl;
Dstreet.del(); //
Dstreet.printOn(cout);
Dstreet.del( head);
Dstreet.printOn(cout);
Dstreet.del( Number, 2);
Dstreet.printOn(cout);
cout << endl << "******* Сложение *********" << endl;
Street Sumstreet(" ", 20);
Sumstreet.printOn(cout);
Sumstreet = Astreet + Dstreet;
Sumstreet.printOn(cout);
cout << "******* Параметры *********" << endl;
cout << "Название улицы -> " << Sumstreet.GetNameStreet() << endl;
cout << "Номер улицы -> " << Sumstreet.GetNumbStreet() << endl;
cout << "Название улицы для поиска-> " << Sumstreet.GetKeyNameStreet() << endl;
cout << "Номер улицы для поиска-> " << Sumstreet.GetKeyNumbStreet() << endl;
cout << "Число домов на улице = " << Sumstreet.GetNumberHome() << endl;
cout << "Число жителей на улице = " << Sumstreet.GetNumberMens() << endl;
cout << "Число квартир на улице = " << Sumstreet.GetNumberApart() << endl;
if ( Sumstreet.GetRemont() )
cout << "На улице нужен ремонт домов!" << endl;
else
cout << "На улице нужен ремонт домов!" << endl;
if ( Sumstreet.GetStreetType() == one )
cout << "Тип улицы -> одностороннее движение" << endl;
if ( Sumstreet.GetStreetType() == two )
cout << "Тип улицы -> двухсторонне движение" << endl;
cout << "******* Изменения параметров *********" << endl;
Sumstreet.SetNameStreet("Новая");
Sumstreet.SetKeyNameStreet("Новая ключ");
Sumstreet.SetNumbStreet( 33 );
Sumstreet.SetKeyNumbStreet( 77 );
cout << "Название улицы 2-> " << Sumstreet.GetNameStreet() << endl;
cout << "Номер улицы 2-> " << Sumstreet.GetNumbStreet() << endl;
cout << "Название улицы для поиска 2-> " << Sumstreet.GetKeyNameStreet() << endl;
cout << "Номер улицы для поиска 2-> " << Sumstreet.GetKeyNumbStreet() << endl;
};
break;
/////////////////////////////////
case 0:
case 88-48:
case 120-48:
cout << endl << "Выход " << endl;
system(" PAUSE");
return 0;
//
default:
cout << endl << "Выбор функции не верен! " << endl;
break;
/// При выходе
cout << endl << "Выход " << endl;
system(" PAUSE");
return 0;
}
system(" PAUSE");
};
///
system(" PAUSE");
return 0;
}
// Вариант для Списков
Модуль - DZ_LIB.H (для списков)
// DZ_LIB.cpp (для DZ_List.cpp)
/ Библиотека функций и методов для варианта с списком (DZ_List)
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////////////////////////////
#include "DZ_Class.h"
//////////////////////////////////
class Home;
////////////////////////////
// Home - конструкторы
//////////////////////////// Класс Home
// Конструктор без параметров
Home::Home(): AbstrHome() {
Home_Number = NULL;
iHome = NULL;
no = NULL;
EtagCount = NULL;
MenCount = NULL;
TypeHome = fast;
NumbApartament = NULL;
HomeRemont = false;
};
//////////////////////////// Класс Home
// Класс Home: Деструктор
////////////////////////////
Home::~Home( )
{
if ( Home_Number != (char *)NULL) delete []Home_Number;
};
//////////////////////////// Класс Home
// Конструтрор копирования
Home::Home( Home & H): AbstrHome() {
no = 0;
if ( H.name != (char *)NULL )
{ name= new char[strlen(H.getName()) + 1];
strcpy_s(name , strlen(H.getName()) + 1 , H.getName());}
else
name = (char *)NULL;
if ( H.Home_Number != (char *)NULL )
{ Home_Number = new char[strlen(H.Home_Number) + 1];
strcpy_s(Home_Number , strlen(H.Home_Number) + 1, H.Home_Number); }
else
Home_Number = (char *)NULL;
iHome = H.iHome;
EtagCount = H.EtagCount;
MenCount = H.MenCount;
TypeHome = H.TypeHome;
NumbApartament = H.NumbApartament;
HomeRemont = H.HomeRemont;
};
//////////////////////////// Класс Home
// Конструктор: номер дома и имя для поиска (name)
Home::Home(const char *HomName, const char *Number) {
// Имя
if ( HomName != (char *)NULL )
{name= new char[strlen(HomName) + 1];
strcpy_s(name, strlen(HomName) + 1 , HomName);
}
else
name = (char *)NULL;
// Номер дома
if ( Number != (char *)NULL )
{Home_Number = new char[strlen(Number) + 1];
strcpy_s(Home_Number , strlen(Number) +1 , Number); }
else
Home_Number = (char *)NULL;
iHome = NULL;
EtagCount = NULL;
MenCount = NULL;
TypeHome = fast;
NumbApartament = NULL;
HomeRemont = false;
};
//////////////////////////// Класс Home
// Конструктор: номер дома и имя/номер для поиска (name)
Home::Home(const char *HomName, const char *Number, int Numb) {
// Имя
if ( HomName != (char *)NULL )
{name= new char[strlen(HomName) + 1];
strcpy_s(name , strlen(HomName) + 1, HomName); }
else
name = (char *)NULL;
// Номер
if ( Number != (char *)NULL )
{Home_Number = new char[strlen(Number) + 1];
strcpy_s(Home_Number , strlen(Number) + 1 , Number); }
else
Home_Number = (char *)NULL;
//
iHome = Numb;
EtagCount = NULL;
MenCount = NULL;
TypeHome = fast;
NumbApartament = NULL;
HomeRemont = false;
}
//////////////////////////// Класс Home
// Конструктор со всеми параметрами
Home::Home(const char *HomName, const char *Number, int Numb,
int Etag, int Men,HomeType Type,int Apart) {
//Имя
if ( HomName != (char *)NULL )
{name= new char[strlen(HomName) + 1];
strcpy_s(name , strlen(HomName) + 1, HomName); }
else
name = (char *)NULL;
// Номер
if ( Number != (char *)NULL )
{Home_Number = new char[strlen(Number) + 1];
strcpy_s(Home_Number , strlen(Number) +1 , Number); }
else
Home_Number = (char *)NULL;
//
iHome = Numb;
EtagCount = Etag;
MenCount = Men;
TypeHome = Type;
NumbApartament = Apart;
HomeRemont = false;
}
//////////////////////////// Класс Home
// Конструктор копирования
Home Home::operator =(Home & H ) {
// Имя
if ( H.name != (char *)NULL )
{ name= new char[strlen(H.getName()) + 1];
strcpy_s(name , strlen(H.getName()) + 1 , H.getName());}
else
name = (char *)NULL;
// Номер
if ( H.Home_Number != (char *)NULL )