МУ_ДЗ_2014 (1079920), страница 31

Файл №1079920 МУ_ДЗ_2014 (Методические указания к лабораторным работам) 31 страницаМУ_ДЗ_2014 (1079920) страница 312018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 31)

getchar();

break;

2.18.3. Результаты работы фрагмента программы

16

5.1.16 Установка и снятие признака ремонта улицы

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Все эти дома отремонтированы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

Улице не нужен ремонт!

После установки!!!!

Улице нужен ремонт!

После снятия признака ремонта!!!!

Улице не нужен ремонт!

Enter

2.19.Фрагмент текста программы для проверки п.п.5.1.17 ТЗ

2.19.1. Пояснения текста фрагмента

В данном фрагменте проверяется автоматическая установка признака ремонта домов улицы (не надо путать с признаком ремонта самой улицы). Признак устанавливается автоматически, если хотя бы один ее дом требует ремонта. Первоначально на улицу S1 добавлено два дома, не требующих ремонта (Н2 и Н3). Затем с помощью метода GetRemont получается признак ремонта домов и распечатывается. Затем у одного из домов Н3 устанавливается признак ремонта дома с помощью метода setAllParam класса Home. Для установки признака дом удаляется с улицы (del) и затем снова добавляется (add). Затем распечатываются характеристики измененного дома. После этого снова с помощью метода GetRemont получается признак ремонта домов улицы и распечатывается.

2.19.2. Текст фрагмента программы

case 17:

cout << "5.1.17 Автоматическое получение признака ремонта домов улицы " << endl;

{

Home H2("Жилой","д.2", 7,2,3, fast , 5);

Home H3("Магазин", "д.3", 3);

Street S1("Улица 1" , 15);

S1.add(&H2);

S1.add(&H3);

cout << "До установки признака ремонта дома и вычисления признака ремонта домов улицы!!!!" << endl;

S1.printOn(cout);

if ( S1.GetRemont() )

cout << "На улице нужен ремонт домов!" << endl;

else

cout << "На улице не нужен ремонт домов!" << endl;

S1.del(&H3 , tail);

H3.setAllParam("Магазин", "д.3", 1,2,3,fast, 3 , true);

H3.printOn(cout);

S1.add(&H3);

S1.GetRemont();

cout << "После вычисления признака ремонта домов улицы!!!!" << endl;

S1.printOn(cout);

if ( S1.GetRemont() )

cout << "На улице нужен ремонт домов!" << endl;

else

cout << "На улице не нужен ремонт домов!" << endl;

}

getchar();

getchar();

break;

2.19.3. Результаты работы фрагмента программы

17

5.1.17 Автоматическое получение признака ремонта домов улицы

До установки признака ремонта дома и вычисления признака ремонта домов улицы!!!!

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Все эти дома отремонтированы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

На улице не нужен ремонт домов!

Номер сп. -0 Имя - Магазин

Номер сим. -д.3

Номер -1

Этажей -2 Жителей -3

Тип дома - простой Требуется ремонт! Число квартир - 3

После вычисления признака ремонта домов улицы!!!!

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Нужен ремонт домов улицы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

На улице нужен ремонт домов!

Enter

2.20.Фрагмент текста программы для проверки п.п.5.1.18 ТЗ

2.20.1. Пояснения текста фрагмента

Создаются две улицы S1(со всеми параметрами и двумя домами Н2 и Н3) и SNew(с минимумом параметров). Далее выполняется операция присваивания домов –“=”. Исходные улицы и улица SNew после присваивания распечатывается. Далее улица S1 изменяется – из нее удаляется один дом Н3. После этого обе улицы снова распечатываются (printOn). После этого S1 изменяется, а SNew остается неизменной.

2.20.2. Текст фрагмента программы

case 18:

cout << "5.1.18 Перегрузка оператора присваивания для улиц " << endl;

{

Home H2("Жилой","д.2", 7,2,3, fast , 5);

Home H3("Магазин", "д.3", 3);

H3.setAllParam("Магазин", "д.3", 1,2,3,fast, 3 , true);

Street S1("Улица 1" , 15);

Street SNew("Улица" , 15);

S1.add(&H2);

S1.add(&H3);

S1.printOn(cout);

SNew.printOn(cout);

SNew = S1;

SNew.printOn(cout);

S1.del(&H3 , head);

getchar();

getchar();

S1.SetNameStreet("Новое название S1 ");

cout << "После изменения S1 (название и удален первый)!!!!" << endl;

cout << "S1!!!!" << endl;

S1.printOn(cout);

cout << "SNew!!!!" << endl;

SNew.printOn(cout);

}

getchar();

break;

2.20.3. Результаты работы фрагмента программы

18

5.1.18 Перегрузка оператора присваивания для улиц

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Нужен ремонт домов улицы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

{{{*******

Улица - Улица Ключ для поиска - Улица

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 0 Улица отремонтирована.

Все эти дома отремонтированы.

Список {

Список List пуст

}

*******}}}

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Нужен ремонт домов улицы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

Enter

После изменения S1 (название и удален первый)!!!!

S1!!!!

{{{*******

Улица - Новое название S1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 1 Улица отремонтирована.

Нужен ремонт домов улицы.

Список {

Номер - 1 Название Магазин

}

*******}}}

SNew!!!!

{{{*******

Улица - Улица 1 Ключ для поиска - Улица 1

Номер улицы - 15 Номер для поиска - 15

Число домов на улице - 2 Улица отремонтирована.

Нужен ремонт домов улицы.

Список {

Номер - 1 Название Жилой

Номер - 2 Название Магазин

}

*******}}}

Enter

Приложение 2 Титульный лист

Московский государственный технический университет им. Н.Э.Баумана

_________________________________________________________________

УТВЕРЖДАЮ:

Большаков С.А.

"__"_____________201X Г.

Комплексная лабораторная работа/ДЗ по дисциплине ПКШ

“Система классов улиц и домов

Листинги программ

(вид документа)

писчая бумага

(вид носителя)

37

(количество листов)

ИСПОЛНИТЕЛЬ:

студент группы ИУ5-ХХ

_____________________

Большаков С.А.

"__"_____________201X г.







Москва - 201X

________________________________________________________________

Приложение 3 Образцы программ

Пример программ для ДЗ/КЛР (массив и список)

// Вариант для Массивов

Модуль - DZ.H (для массивов и списков)

// DZ.H

// Общие константы и описания

#define StreetClass 1

#define HomeClass 2

static 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)

delete [] 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);

// Методы класса Home

void 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);

// Свойства класса Home

public:

char *Home_Number; // Символьный номер дома

int iHome; // Номер дома числовой

int EtagCount; // Число этажей

int MenCount ; // Число жителей в доме

HomeType TypeHome ; // Тип дома

Характеристики

Тип файла
Документ
Размер
2,79 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Методические указания к лабораторным работам
ЛР9_ПКШ
ЛР10_ПКШ
ЛР11_ПКШ
ЛР_12_КЛР_ПКШ
ЛР_13_КЛР_ПКШ
ЛР_14_КЛР_ПКШ
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6508
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее