Листинг_DZ_VS__2014 (Методические указания к лабораторным работам)
Описание файла
Файл "Листинг_DZ_VS__2014" внутри архива находится в следующих папках: Методические указания к лабораторным работам, ЛР_15_КЛР_ПКШ. PDF-файл из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
1Московский государственный технический университет им. Н.Э.Баумана_________________________________________________________________УТВЕРЖДАЮ:Большаков С.А."__"_____________201X Г.Комплексная лабораторная работа/ДЗ по дисциплине ПКШ“Система классов улиц и домов”Листинги программ(вид документа)писчая бумага(вид носителя)37(количество листов)ИСПОЛНИТЕЛЬ:студент группы ИУ5-ХХБольшаков С.А._____________________"__"_____________201X г.Москва - 201X________________________________________________________________2СОДЕРЖАНИЕПример программ для ДЗ/КЛР (массив и список) ............................................................3Модуль - DZ.H (для массивов и списков).........................................................................3Модуль - DZ_Class.H (для массивов и списков) ..............................................................3Модуль - DZ_LIB.H (для массивов) ..................................................................................5Модуль - DZ_Array.cpp (для массивов) ..........................................................................16Модуль - DZ_LIB.H (для списков) ..................................................................................31Модуль - DZ_List.cpp (для списков) ...............................................................................423Пример программ для ДЗ/КЛР (массив и список)// Вариант для МассивовМодуль - DZ.H (для массивов и списков)// DZ.H// Общие константы и описания#define StreetClass1#define HomeClass2static BOOL DestructorDeleteObj = false;enum HomeType{fast, multiple , complex};enum StreetType{one, two , more };enum TypeAddDel {tail, head, Number ,NumbAfter, NumbCurrent, NumbBefore,AssbAfter, AssCurrent, AssBefore , createObj , nocreateObj , deleteObj, nodeleteObj };Модуль - DZ_Class.H (для массивов и списков)При включении в проект нужно раскомментировать нужную строку вописании класса Street, соответсвующую своему варианту.// DZ_Class.h// Описания классов для варианта массив#include "stdafx.h"#include <iostream>#include "DZ.h" // Общие константыusing namespace std;// Абстрактный класс для домаclass AbstrHome : public CObject {public:virtual int classType() = 0;virtual char *className() = 0;virtual void printOn(ostream &) = 0;AbstrHome(){ name = (char *)NULL;no = NULL;};~AbstrHome(){if( name != (char *)NULL)delete [] name;};char *name;// ? Резерв Поисковое имяint no;// ? РезервНомер в списке};// Абстрактный класс для улицыclass AbstrStreet {public:virtual int classType() = 0;virtual char *className() = 0;virtual void printOn(ostream &) = 0;AbstrStreet(){ name = (char *)NULL;no = NULL;};~AbstrStreet(){if( name != (char *)NULL)4delete [] name;};char *name;// ? Резерв Поисковое имяint no;// ? РезервНомер в списке};////////////////////////// Класс домов//////////////////////class Home: public AbstrHome {// Конструкторыpublic:Home();Home( Home & H) ;Home( Home * pH);Home(const char *HomName, const char *Number);Home(const char *HomName, const char *Number, int Numb) ;Home(const char *HomName, const char *Number, int Numb,int Etag, int Men=0,HomeType Type = fast,int Apart=0);// Деструктор~Home();//Оператор присваивания для поддержки перегрузки "+"Home operator =(Home & H );// Виртуальные методыpublic:virtual int classType() { return HomeClass; }virtual char *className() { return "Home"; }virtual void printOn(ostream & out);// Методы класса Homevoid setName(const char *HomName , const char *Number=NULL);const char *getName() {return (const char *)name; };const char *getNumb() {return (const char *)Home_Number; };int getNo() { return no; };void getParam(int & iH, int & Etag ,int & Men ,HomeType & Type, int & Apart ){iH = iHome; Etag = EtagCount; Men = MenCount;Type = TypeHome; Apart = NumbApartament ; };void setParam(int iH, int Etag ,int Men ,HomeType Type, int Apart ){ iHome= iH; EtagCount= Etag; MenCount= Men;TypeHome = Type; NumbApartament = Apart; };void setAllParam(const char *HomName , const char *Number, int iH, int Etag ,int Men ,HomeType Type, int Apart , BOOL rem = false);// Дружественная функция для перегрузкиfriend Home & operator +(Home & H1 , Home & H2);// Свойства класса Homepublic:char *Home_Number; // Символьный номер домаint iHome;// Номер дома числовойint EtagCount;// Число этажейint MenCount ;// Число жителей в домеHomeType TypeHome ;// Тип домаBOOL HomeRemont ; // Требуется ли ремонт домаint NumbApartament; // Число квартир// …};//////////////////////// Класс улиц//////////////////////// Разница для массивов и списков только здесь !!! (нужное для массивов и списковперекомментировать)class Street: public AbstrStreet , public CObArray {5//class Street: public AbstrStreet , public CArray <CObject *, CObject * >{///////// Для списков кроме перекомментирования нужно изменить библиотеку DZ_LIB.cpp// class Street: public AbstrStreet , public CObList {// class Street: public AbstrStreet , public CList<CObject *, CObject * > {public:Street();Street(const char *sName);Street(const char *sNumbSearch, const char *sName);Street(int Num);Street(const char *sName , int Num);Street(Street & S);~Street() { };// Перегрузка присваиванияStreet operator =(Street & S);// Виртуальные методыpublic:virtual int classType(){ return StreetClass;};virtual char *className() {return "Street";};virtual void printOn(ostream & out);// Свойства класса Street// Номер улицы – тип целыйpublic:char *Name_Street;int Homes_num;int NumberStreet;BOOL Remont;// для всех домовBOOL RemontStreet;StreetType StrType;Street * ListOfNear; // соседние улицы - резервировано// Методы класса Улиц - Streetvoid add(Home *pH, TypeAddDel = tail , int Numb = 1 , TypeAddDel = createObj);void del( TypeAddDel = tail , int Numb = 1 , TypeAddDel = nodeleteObj);// Получить и установить параметры улицы name,, no, NumberStreetint GetNumberHome(){return (int) GetCount() ;};int GetNumberMens(); //char * GetNameStreet(){ return Name_Street;};char * GetKeyNameStreet(){ return name;};int GetNumbStreet(){ return NumberStreet;};int GetKeyNumbStreet(){ return no;};void SetNameStreet(const char * NameStr);void SetKeyNameStreet(const char * sName);void SetNumbStreet( int n ){ NumberStreet = n; return;};void SetKeyNumbStreet( int k){ no = k; return;};BOOL GetRemont();BOOL GetRemontStr(){ return RemontStreet;};void SetRemontStr(BOOL rS){ RemontStreet = rS; return;};StreetType GetStreetType(){ return StrType;};void SetStreetType(StreetType t){ StrType= t; return;};// Дружественные функцииfriend Street & operator +( Street & X , Street & Y );};Модуль - DZ_LIB.H (для массивов)// DZ_LIB.cpp (для DZ_Array.cpp)// Библиотека функций и методов для варианта с массивом (DZ_Array)#include "stdafx.h"6#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());}elsename = (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); }elseHome_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);}elsename = (char *)NULL;// Номер дома7if ( Number != (char *)NULL ){Home_Number = new char[strlen(Number) + 1];strcpy_s(Home_Number , strlen(Number) +1 , Number); }elseHome_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); }elsename = (char *)NULL;// Номерif ( Number != (char *)NULL ){Home_Number = new char[strlen(Number) + 1];strcpy_s(Home_Number , strlen(Number) + 1 , Number); }elseHome_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); }elsename = (char *)NULL;// Номерif ( Number != (char *)NULL ){Home_Number = new char[strlen(Number) + 1];strcpy_s(Home_Number , strlen(Number) +1 , Number); }elseHome_Number = (char *)NULL;//iHome= Numb;EtagCount = Etag;MenCount = Men;TypeHome = Type;NumbApartament = Apart;HomeRemont = false;}//////////////////////////// Класс Home8// Конструктор копирования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());}elsename = (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); }elseHome_Number = (char *)NULL;//iHome = H.iHome;EtagCount = H.EtagCount;MenCount = H.MenCount;TypeHome = H.TypeHome;NumbApartament = H.NumbApartament;HomeRemont = H.HomeRemont;return *this;};/////////////////////// Методы класса Home/////////////////////// Метод печати дома//////////////////void Home::printOn(ostream & out) {//out << "Номер сп.
-" <<no ;if ( name !=(char *)NULL){out << " Имя - " << name << endl; }else{out << " Имя не задано " << endl; };//if ( Home_Number !=(char *)NULL)out <<"Номер сим. -" << Home_Number << endl;else{out << " Символьное имя не задано " << endl; };//out << " Номер -" << iHome << endl <<"Этажей -" << EtagCount << " Жителей -" << MenCount <<endl;if (TypeHome == fast)cout << "Тип дома - простой ";if (TypeHome == multiple)cout << "Тип дома - много строений ";if (TypeHome == complex)cout << "Тип дома - сложный ";if ( HomeRemont ) cout << " Требуется ремонт! ";else cout << " Ремонт не нужен! ";cout << " Число квартир - " << NumbApartament << endl<< endl;}//////////////////////////// Класс Home// Метод - Установить имя//////////////////void Home::setName(const char *HomName , const char *Number){// Имя из базового класса - резерв для прискаif ( name != NULL)delete []name;9if ( HomName != (char *)NULL ){name= new char[strlen(HomName) + 1];strcpy_s(name , strlen(HomName) + 1 , HomName); }elsename = (char *)NULL;// Имя домаif ( Home_Number != NULL)delete []Home_Number;if ( Number != NULL){Home_Number= new char[strlen(Number) + 1];strcpy_s(Home_Number , strlen(Number) + 1 , Number);}elseHome_Number = (char *)NULL;};//////////////////////////// Класс Home// Метод - Установить все параметры//////////////////void Home::setAllParam(const char *HomName , const char *Number, int iH, int Etag ,int Men ,HomeType Type, int Apart , BOOL rem){// Имя из базового класса - резерв для прискаif ( name != NULL)delete []name;if ( HomName != (char *)NULL ){name= new char[strlen(HomName) + 1];strcpy_s(name, strlen(HomName) + 1, HomName); }elsename = (char *)NULL;// Имя из базового класса - резерв для прискаif ( Home_Number != NULL)delete []Home_Number;//if ( Number != NULL){Home_Number= new char[strlen(Number) + 1];strcpy_s(Home_Number , strlen(Number) + 1, Number) ;}elseHome_Number = (char *)NULL;iHome= iH;EtagCount= Etag;MenCount= Men;TypeHome = Type;NumbApartament = Apart;HomeRemont = rem;};// Методы дружественные - friend//////////////////////////// Класс Home// Перегрузка сложения домов//////////////////Home & operator +(Home & H1 , Home & H2){Home *pTemp = new Home; // новый объект для сложения//pTemp->no = H1.no;// Имя базового - сумма имен10pTemp->name = new char[strlen(H1.name) + strlen(H2.name)+ 5 ]; // учтем пробелы!pTemp->name[0]='\0';if (H1.name != NULL)strcpy_s(pTemp->name, strlen(H1.name) + 1 , H1.name);if (H2.name != NULL){strcat_s(pTemp->name, strlen(H1.name) + strlen(H2.name)+ 5 ," + ");strcat_s(pTemp->name, strlen(H1.name) + strlen(H2.name)+ 5 ,H2.name);};// Имя = сумма имен Home_NumberpTemp->Home_Number = new char[strlen(H1.Home_Number) + strlen(H2.Home_Number)+ 5];pTemp->Home_Number[0]='\0';if (H1.Home_Number != NULL)strcpy_s(pTemp->Home_Number, strlen( H1.Home_Number ) + 1 , H1.Home_Number);if (H2.Home_Number != NULL){strcat_s(pTemp->Home_Number,strlen(H1.Home_Number) + strlen(H2.Home_Number)+ 5 ,"+ ");strcat_s(pTemp->Home_Number,strlen(H1.Home_Number) + strlen(H2.Home_Number)+ 5,H2.Home_Number);};// ПараметрыpTemp-> iHome= H1.iHome;pTemp-> EtagCount = H1.EtagCount;pTemp-> MenCount = H1.MenCount + H2.MenCount;pTemp-> TypeHome = complex;pTemp-> NumbApartament = H1.NumbApartament + H2.NumbApartament;pTemp->HomeRemont = (H1.HomeRemont || H2.HomeRemont ) ? true : false ;return *pTemp;};//////////////////////////// Класс улиц Street///////////////////////// Конструкторы Street////////////////// Класс Street// Конструктор: - Пустые параметры//////////////////Street::Street():AbstrStreet() {// для базового классаno = NULL;name = (char *)NULL;Name_Street = (char *)NULL;Homes_num = NULL;StrType = two;Remont = false;RemontStreet = false;NumberStreet = NULL;ListOfNear = (Street *)NULL;};////////////////// Класс Street// Конструктор: Имя улицы (Name_Street) и имя для поиска (name) общие//////////////////Street::Street(const char *sName) :AbstrStreet() {if ( sName != (char *) NULL ){ name= new char[strlen(sName) + 1];strcpy_s(name , strlen(sName) + 1 , sName);Name_Street= new char[strlen(sName) + 1];strcpy_s(Name_Street , strlen(sName) + 1 , sName); }else11{name = (char *)NULL;Name_Street = (char *)NULL;};no = NULL;Homes_num = NULL;StrType = two;Remont = false;RemontStreet = false;NumberStreet = NULL;ListOfNear = (Street *)NULL;};////////////////// Класс Street// Конструктор: Имя улицы и имя для поиска разные//////////////////Street::Street(const char *sName , const char *sNumb):AbstrStreet(){// Имя базового для поискаif ( sNumb != (char *) NULL ){ name= new char[strlen(sNumb) + 1];strcpy_s(name , strlen(sNumb) + 1 , sNumb);}elsename = (char *)NULL;// Имя улицыif ( sName != (char *) NULL ){Name_Street= new char[strlen(sName) + 1];strcpy_s(Name_Street, strlen(sName) + 1 , sName); }elseName_Street = (char *)NULL;//no = NULL;Homes_num = NULL;StrType = two;Remont = false;RemontStreet = false;NumberStreet = NULL;ListOfNear = (Street *)NULL;};////////////////// Класс Street// Конструктор: Номер для поиска//////////////////Street::Street(int Num) {name = (char *)NULL;Name_Street = (char *)NULL;no = Num; // Номер из базового для поискаHomes_num = NULL;StrType = two;Remont = false;RemontStreet = false;NumberStreet = Num;ListOfNear = (Street *)NULL;};////////////////// Класс Street// Конструктор: Имя улицы и номер для происка//////////////////Street::Street(const char *sName , int Num) :AbstrStreet() {// Имя улицы и для поискаif ( sName != (char *) NULL )12{ name= new char[strlen(sName) + 1];strcpy_s(name , strlen(sName) + 1, sName);Name_Street= new char[strlen(sName) + 1];strcpy_s(Name_Street, strlen(sName) + 1 , sName); }else{name = (char *)NULL;Name_Street = (char *)NULL;};no = Num; // Номер для поискаHomes_num = NULL;StrType = two;Remont = false;RemontStreet = false;NumberStreet = Num;ListOfNear = (Street *)NULL;};////////////////// Класс Street*// Конструктор копирования//////////////////Street::Street(Street & S) :AbstrStreet() {// Имя для поискаif ( S.name != (char *) NULL ){ name= new char[strlen(S.name) + 1];strcpy_s(name , strlen(S.name) + 1, S.name);}elsename = (char *)NULL;// Имя улицыif ( S.Name_Street != (char *) NULL ){Name_Street= new char[strlen(S.Name_Street) + 1];strcpy_s(Name_Street , strlen(S.Name_Street) + 1 , S.Name_Street); }elseName_Street = (char *)NULL;//no = S.no;Homes_num = S.Homes_num;StrType = S.StrType;Remont = S.Remont;RemontStreet = S.RemontStreet;NumberStreet = S.NumberStreet;ListOfNear = S.ListOfNear;// Цикл формирования новой улицыint nRazm = 0;nRazm = (int ) S.GetCount() ;for ( int i = 0 ; i < nRazm ; i++){Add( ((Home * ) S.GetAt(i)));};};////////////////////////// Методы класса Street////////////////////////////////////////// Класс Street*// Метод печати улицы/////////////////////void Street::printOn(ostream & out) {if ( Name_Street != (char *)NULL ){ out << "{{{******* "<<endl<<"Улица - "<< Name_Street ; }13else{out << "Название не задано! "<<endl;};if ( name != (char *)NULL ){ out << " Ключ для поиска - "<< name << endl ; }else{out << "Ключ не задан! "<<endl;};out << "Номер улицы - "<< NumberStreet ;out << " Номер для поиска - "<< no << endl;out << "Число домов на улице - "<< Homes_num ;if ( RemontStreet )out << " Нужен ремонт улицы."<< endl;elseout << " Улица отремонтирована."<< endl;if ( GetRemont() )out << "Нужен ремонт домов улицы."<< endl;elseout << "Все эти дома отремонтированы."<< endl;int nRazm = 1;nRazm = (int ) GetCount() ;out << "Число в домов на улице = "<< GetCount()<<"}" << endl;for ( int i = 0 ; i < nRazm ; i++){((Home * ) GetAt(i))->printOn(cout);}out << "*******}}}" << endl;}////////////////// Класс Street*/// Перегрузка присваивания для улицы/////////////////////Street Street::operator =(Street & S) {// Имя для поискаif ( S.name != (char *) NULL ){ name= new char[strlen(S.name) + 1];strcpy_s(name , strlen(S.name) + 1, S.name);}elsename = (char *)NULL;// Имя улицыif ( S.Name_Street != (char *) NULL ){Name_Street= new char[strlen(S.Name_Street) + 1];strcpy_s(Name_Street , strlen(S.Name_Street) + 1 , S.Name_Street); }elseName_Street = (char *)NULL;//no = S.no;Homes_num = S.Homes_num;StrType = S.StrType;Remont = S.Remont;RemontStreet = S.RemontStreet;NumberStreet = S.NumberStreet;ListOfNear = S.ListOfNear;int nRazm = 0;nRazm = (int ) S.GetCount() ;// Цикл копирования домовfor ( int i = 0 ; i < nRazm ; i++){14Add( ((Home * ) S.GetAt(i)));};return *this;};////////////////// Класс Street*// Метод вычисления необходимости ремонта домов улицы/////////////////////BOOL Street::GetRemont(){BOOL Flag = false;/// Цикл проверки ремонтаint nRazm = 0;nRazm = (int ) GetCount() ;// Цикл копирования домовfor ( int i = 0 ; i < nRazm ; i++){if (((Home * ) GetAt(i))->HomeRemont ) Flag = true ;};return Flag;};////////////////// Класс Street*// Метод добавления дома на улицу (выбор варианта добавления)/////////////////////void Street::add(Home *pH , TypeAddDel t , int Numb , TypeAddDel tcr ) {if ( t == tail) Add((CObject *) pH); // в Хвостif ( t == head) InsertAt(0,(CObject *) pH); // в Головуif ( t == Number) InsertAt(Numb,(CObject *) pH); // По номеру// Подсчитать число домовHomes_num = (int) GetCount() ;};////////////////// Класс Street*// Метод удаления дома с улицы (выбор варианта удаления)/////////////////////void Street::del( TypeAddDel t , int Numb , TypeAddDel tdl) {if ( t == tail) RemoveAt(GetCount() - 1); // Из головыif ( t == head) RemoveAt(0); // Из хвостаif ( t == Number) RemoveAt(Numb); // По номеру// Подсчитать число домовHomes_num = (int) GetCount() ;};////////////////// Класс Street*// дружественная функция для операции сложения улиц/////////////////////Street & operator +( Street & X , Street & Y ){Street *pTemp = new Street;pTemp->name = new char[strlen(X.name) + strlen(Y.name) + 5 ];if (X.name != (char *)NULL ){ strcpy_s(pTemp->name, strlen(X.name) + 1, X.name);}elsepTemp->name[0]='\0';if (Y.name != (char *)NULL ){ strcat_s(pTemp->name, strlen(X.name) + strlen(Y.name) + 5 , " + ");strcat_s(pTemp->name, strlen(X.name) + strlen(Y.name) + 5 , Y.name); }// Name_StreetpTemp->Name_Street = new char[strlen(X.Name_Street) + strlen(Y.Name_Street) + 5];if (X.Name_Street != (char *)NULL ){ strcpy_s(pTemp->Name_Street, strlen(X.Name_Street) + 1 , X.Name_Street);}15elsepTemp->Name_Street[0]='\0';if (Y.Name_Street != (char *)NULL ){strcat_s(pTemp->Name_Street,strlen(X.Name_Street) + strlen(Y.Name_Street) + 5 ," + ");strcat_s(pTemp->Name_Street,strlen(X.Name_Street) + strlen(Y.Name_Street) + 5,Y.Name_Street);};// Параметры StreetpTemp->Homes_num = NULL;pTemp->NumberStreet = X.NumberStreet;pTemp->Remont = (X.GetRemont() || Y.GetRemont()) ? true : false;// для домовpTemp->RemontStreet = (X.RemontStreet || Y.RemontStreet) ? true : false; ;pTemp->StrType = ( X.StrType == two || Y.StrType == two) ? two : one ;pTemp->ListOfNear = (Street * )NULL;// резерв, нужно сложить списки соседних улиц// Массивint nRazm = 0;nRazm = (int ) X.GetCount() ;for ( int i = 0 ; i < nRazm ; i++){pTemp->Add( ((Home * ) X.GetAt(i)));};nRazm = (int ) Y.GetCount() ;for ( int i = 0 ; i < nRazm ; i++){pTemp->Add( ((Home * ) Y.GetAt(i)));};pTemp->Homes_num = (int )(pTemp->GetCount()) ;return *pTemp;};////////////////// Класс Street*// Метод подсчета числа жителей/////////////////////int Street::GetNumberMens(){int Summ = 0;// Цикл подсчетаint nRazm = 0;nRazm = (int ) GetCount() ;for ( int i = 0 ; i < nRazm ; i++){Summ = Summ + ((Home *)GetAt( i))->MenCount ;};return Summ;};////////////////// Класс Street*// Метод подсчета числа квартир/////////////////////int Street::GetNumberApart(){int Summ = 0;int nRazm = 0;// Цикл подсчетаnRazm = (int ) GetCount() ;for ( int i = 0 ; i < nRazm ; i++){Summ = Summ + ((Home *)GetAt( i))->NumbApartament ;};return Summ;};////////////////// Класс Street16// Метод установки названия улицы/////////////////////void Street::SetNameStreet(const char * NameStr){if (Name_Street != (char *) NULL)delete []Name_Street;if ( NameStr != (char *) NULL ){Name_Street= new char[strlen(NameStr) + 1];strcpy_s(Name_Street , strlen(NameStr) + 1, NameStr);}elseName_Street = (char *) NULL;return;};////////////////// Класс Street// Метод установки имени для поиска улицы/////////////////////void Street::SetKeyNameStreet(const char * sName){if (name != (char *) NULL)delete []name;if ( sName != (char *) NULL ){name= new char[strlen(sName) + 1];strcpy_s(name , strlen(sName) + 1 , sName);}elseName_Street = (char *) NULL;return;};////////////////////////Модуль - DZ_Array.cpp (для массивов)// DZ_Array.cpp// Главный модуль проекта для отладки и сдачи системы классов (база списки)#include "stdafx.h"#include "DZ_Class.h"#include <iostream>using namespace std;///////////////////////////////// Для ПМИ//int mainMETOD() // Эту строку нужно раскомментировать, а следующую закоментировать// при подключении отладочного варианта текста программы (и наоборот для методикииспытаний)int main(void){int iPunkt;system (" chcp 1251>nul ");while ( true ) {system (" CLS ");cout << endl << "Меню тестового примера системы классов улиц." << endl << endl;// Новое менюcout << endl << "1.