МУ_ДЗ_2014 (1079920), страница 30
Текст из файла (страница 30)
Street Dstreet("Вторая ", 20);
Dstreet.add(&H5 , tail);
Dstreet.add(&H6 , tail);
Dstreet.add(&H7 , tail);
Dstreet.printOn(cout);
getchar();
getchar();
cout << endl << "******* Сложение *********" << endl;
Street Sumstreet(" ", 20);
Sumstreet.printOn(cout);
Sumstreet = Astreet + Dstreet;
Sumstreet.printOn(cout);
getchar();
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;
}
getchar();
getchar();
break;
2.15.3. Результаты работы фрагмента программы
13
5.1.13 Сложение двух улиц
{{{*******
Улица - Первая Ключ для поиска - Первая
Номер улицы - 20 Номер для поиска - 20
Число домов на улице - 3 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название ДЭЗ
Номер - 2 Название Магазин
Номер - 3 Название Жилой
}
*******}}}
{{{*******
Улица - Вторая Ключ для поиска - Вторая
Номер улицы - 20 Номер для поиска - 20
Число домов на улице - 3 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Аптека
Номер - 2 Название Перекресток
Номер - 3 Название Детский сад
}
*******}}}
Enter
******* Сложение *********
{{{*******
Улица - Ключ для поиска -
Номер улицы - 20 Номер для поиска - 20
Число домов на улице - 0 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Список List пуст
}
*******}}}
{{{*******
Улица - Первая + Вторая Ключ для поиска - Первая + Вторая
Номер улицы - 20 Номер для поиска - 0
Число домов на улице - 6 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название ДЭЗ
Номер - 2 Название Магазин
Номер - 3 Название Жилой
Номер - 4 Название Аптека
Номер - 5 Название Перекресток
Номер - 6 Название Детский сад
}
*******}}}
Enter
******* Параметры *********
Название улицы -> Первая + Вторая
Номер улицы -> 20
Название улицы для поиска-> Первая + Вторая
Номер улицы для поиска-> 0
Число домов на улице = 6
Число жителей на улице = 6
Число квартир на улице = 10
На улице не нужен ремонт домов!
Тип улицы -> двухсторонне движение
Enter
2.16.Фрагмент текста программы для проверки п.п.5.1.14 ТЗ
2.16.1. Пояснения текста фрагмента
В примере описана улица S1 и два дома Н2 и Н3. Затем эти два дома добавляются на улицу методом add (со вторым параметром по умолчанию – в этом случае используется tail) и выполняется распечатка содержания улицы с тремя домами. Далее деменстрируются разные режимы добавления дома: head (в начало – Н5 и Н6), tail ( в конец – Н7) и Number (по номеру – Н8). Послу каждой операции содержание улицы распечатывается.
2.16.2. Текст фрагмента программы
case 14:
cout << "5.1.14 Добавление дома на улицу" << endl;
{
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Street S1("Улица с параметрами" , 15);
S1.add(&H2);
S1.add(&H3);
S1.printOn(cout);
getchar();
getchar();
Home H5("Аптека","д.2", 7,2,3, fast , 5);
Home H6("Перекресток", "д.3", 3);
S1.add(&H5 , head);
S1.add(&H6 , head);
S1.printOn(cout);
getchar();
Home H7("Детский сад", "д.4а", 4,2);
S1.add(&H7 , tail);
S1.printOn(cout);
getchar();
Home H8("Жилой 3","д.2", 70,20,30, fast , 50);
S1.add(&H8 , Number, 2);
S1.printOn(cout);
}
getchar();
getchar();
break;
2.16.3. Результаты работы фрагмента программы
14
5.1.14 Добавление дома на улицу
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 2 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Жилой
Номер - 2 Название Магазин
}
*******}}}
Enter
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 4 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Перекресток
Номер - 2 Название Аптека
Номер - 3 Название Жилой
Номер - 4 Название Магазин
}
*******}}}
Enter
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 5 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Перекресток
Номер - 2 Название Аптека
Номер - 3 Название Жилой
Номер - 4 Название Магазин
Номер - 5 Название Детский сад
}
*******}}}
Enter
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 6 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Перекресток
Номер - 2 Название Жилой 3
Номер - 3 Название Аптека
Номер - 4 Название Жилой
Номер - 5 Название Магазин
Номер - 6 Название Детский сад
}
*******}}}
Enter
2.17.Фрагмент текста программы для проверки п.п.5.1.15 ТЗ
2.17.1. Пояснения текста фрагмента
Создается улица S1. В нее разными способами добавляются дома: Н2, Н3, Н5, Н6, Н7 и Н8. Содержимое улицы распечатывается (printOn). Далее с помощью метода del дома удаляются с улицы в разных режимах: head (из начала ), tail ( с конца) и Number (по номеру). После каждого удаления содержимое улицы распечатывается.
2.17.2. Текст фрагмента программы
case 15:
cout << "5.1.15 Удаление дома с улицы" << endl;
{
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Street S1("Улица с параметрами" , 15);
S1.add(&H2);
S1.add(&H3);
Home H5("Аптека","д.2", 7,2,3, fast , 5);
Home H6("Перекресток", "д.3", 3);
S1.add(&H5 , head);
S1.add(&H6 , head);
Home H7("Детский сад", "д.4а", 4,2);
S1.add(&H7 , tail);
Home H8("Жилой 3","д.2", 70,20,30, fast , 50);
S1.add(&H8 , Number, 2);
S1.printOn(cout);
getchar();
getchar();
cout << "Удаление дома с улицы конец !!!" << endl;
Home Temp;
S1.del(&H8, tail); //
S1.printOn(cout);
getchar();
cout << "Удаление дома с улицы начало!!!" << endl;
S1.del(&H8 , head);
S1.printOn(cout);
getchar();
cout << "Удаление дома с улицы второго!!!" << endl;
S1.del(&H8 , Number, 2);
S1.printOn(cout);
}
getchar();
break;
2.17.3. Результаты работы фрагмента программы
15
5.1.15 Удаление дома с улицы
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 6 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Перекресток
Номер - 2 Название Жилой 3
Номер - 3 Название Аптека
Номер - 4 Название Жилой
Номер - 5 Название Магазин
Номер - 6 Название Детский сад
}
*******}}}
Enter
Удаление дома с улицы конец !!!
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 5 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Перекресток
Номер - 2 Название Жилой 3
Номер - 3 Название Аптека
Номер - 4 Название Жилой
Номер - 5 Название Магазин
}
*******}}}
Enter
Удаление дома с улицы начало!!!
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 4 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Жилой 3
Номер - 2 Название Аптека
Номер - 3 Название Жилой
Номер - 4 Название Магазин
}
*******}}}
Enter
Удаление дома с улицы второго!!!
{{{*******
Улица - Улица с параметрами Ключ для поиска - Улица с параметрами
Номер улицы - 15 Номер для поиска - 15
Число домов на улице - 3 Улица отремонтирована.
Все эти дома отремонтированы.
Список {
Номер - 1 Название Жилой 3
Номер - 2 Название Жилой
Номер - 3 Название Магазин
}
*******}}}
Enter
2.18.Фрагмент текста программы для проверки п.п.5.1.16 ТЗ
2.18.1. Пояснения текста фрагмента
В данном фрагменте устанавливается (true) и сбрасывается (false) признак ремонта улицы. Это выполняется с помощью метода класса SetRemontStr. Проверка установленного признака выполняется методом класса GetRemontStr. Операции выполняются над улицей S1, к которой предварительно добавлены дома Н2 и Н3.
2.18.2. Текст фрагмента программы
case 16:
cout << "5.1.16 Установка и снятие признака ремонта улицы " << endl;
{
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Street S1("Улица 1" , 15);
S1.add(&H2);
S1.add(&H3);
S1.printOn(cout);
if ( S1.GetRemontStr() )
cout << "Улице нужен ремонт!" << endl;
else
cout << "Улице не нужен ремонт!" << endl;
cout << "После установки!!!!" << endl;
S1.SetRemontStr(true);
if ( S1.GetRemontStr() )
cout << "Улице нужен ремонтв!" << endl;
else
cout << "Улице не нужен ремонт!" << endl;
cout << "После снятия признака ремонта!!!!" << endl;
S1.SetRemontStr(false);
if ( S1.GetRemontStr() )
cout << "Улице нужен ремонт!" << endl;
else
cout << "Улице не нужен ремонт!" << endl;
}
getchar();