Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Пример выполнения задания d

Пример выполнения задания d (Задания для самостоятельного выполнения)

PDF-файл Пример выполнения задания d (Задания для самостоятельного выполнения) Информатика (8414): Другое - 2 семестрПример выполнения задания d (Задания для самостоятельного выполнения) - PDF (8414) - СтудИзба2017-06-17СтудИзба

Описание файла

Файл "Пример выполнения задания d" внутри архива находится в папке "Задания для самостоятельного выполнения". PDF-файл из архива "Задания для самостоятельного выполнения", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика" в общих файлах.

Просмотр PDF-файла онлайн

Текст из PDF

Реализация класса треугольников Дтя некоторого множества заданных координатами своих вершин треугольников найти треугольник максимальной площади (если максимальную площадь имеют нвскагько треугольников, то найти первый из них). Предусмотреть возможность перемещения треугольников и проверки включения одного треуголышка в другой. Для реализации этой задачи составить описание класса треугольников на плоскости. Предусмотреть возможность объявления в клиентской программе (яз1 и) экземпляра треугольника с заданными координатами вершин. Предусмотреть наличие в классе методов, обеспечивающих: !). перемещение треугольников на плоскости; 2) определение отношения > для парь) заданных треугольников (мера сравнения — площадь треугсотьников); 3) определение отношения включения типа: «Треугольник ! входит в (не входит в) Треугольник 2».

Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. Отметим, что сейчас мы еще не готовы провести полномасштабную объектноориентированную декомпозицию программы. Для этого нам не хватает знаний, которые будут получены на втором семинаре. Поэтому применим гибридный подход: разработку главного клиента яа1п() проведем по технологии функциональной декомпозиции, а функции-серверы, вызываемые из на1п(), будут использовать объекты.

Начнем с выявления основных понятий/классов для нашей задачи. Первый очевидный класс Тг! апд1 е необходим для представления треугольников. Из нескольких способов определения треугольника на плоскости выберем самьгй простой— через три точки, задающие его вершины. Сделанный выбор опирается на новое понятие, отсутствующее в условии задачи, — понятие точки, Точку на плоскости можно представить различными способами; остановимся на наиболее популярном — с помощью пары вещественных чисел, задающих координаты точки по осям х и у. Таким образом, с понятием точки связывается как минимум пара атрибутов.

В принципе, этого уже достаточно, чтобы подумать о создании класса Ро1пг. Если же представить, что можно делать с объектом типа точки — например, перемещать ее на плоскости или определять ее вхождение в заданную фигуру,— то становится ясным, что такой класс Ро) пг будет полезен. Итак, объектно-ориентированная декомпозиция дала нам два класса: Тг) зпц1е и Ро)пс. Как зти два класса должны быть связаны друг с другом? На втором семинаре мы будем более подробно рассматривать взаимоотношения между классами.

Пока же отметим, что наиболее часто для двух классов имеет место одно из двух: О отношение наследования (отношение Й а); С3 отношение агрегации нли включения (отношение Ьаз а). Если класс В является «частным случаем» класса А, то говорят, что В Ь а А (например, класс треугольников есть частный внд класса многоугольников: Тг1 апд!е В а Ро1удоп). Если класс А содержит в себе объект класса В, то говорят, что А Ьаз а В (напрнмер, класс треугольников может содержать в себе объекты класса точек: Тг1 апц1 е Бал а Рогпс). Теперь уточним один вопрос: в какам порядке мы будем перечислять точки, задавая треугольник? Порядок перечисления вершин важен для нас потому, что в дальнейшем, решая подзадачу определения отношения включения одного треугольника в другой, мы будем рассматривать стороны треугольника как векторы.

Условимся, что вершины треугольника перечисляются в направлении яо часовой стрелке. Займемся теперь основным клиентом — яа)п(). Здесь мы применяем функциональную декомпозицию, или технологию нисходящего проектирования. В соответствии с данной технологией основной алгоритм представляется как последовательность нескольких подзадач. Каждой подзадаче соответствует вызываемая серверная функция. На' начальном этапе проектирования тела этих функций могут быть заполнены «заглушками» вЂ” отладочной печатью.

Если при этом в какой-то серверной функции окажется слабое сцепление, то она в свою очередь разбивается на несколько подзадач. То же самое происходит и с классами, используемыми в программе: по мере реализации подзадач они пополняются необходимыми для этого методами. Такая технология облегчает отладку и поиск ошибок, сокращая общее время разработки программы.

В соответствии с описанной технологией мы представим решение задачи 1.2 как последовательность нескольких этапов. Иногда как бы по забывчивости мы будем допускать некоторые «ляпы», поскольку в процессе поиска ошибок можно глубже понять нюансы программирования с классами. На первом этапе мы напишем код для начального представления классов Ро) пс и Тг1 апц1 е, достаточный для того, чтобы создать несколько объектов типа Тг) апд) е и реализовать первый пункт меню — вывод всех обьектов на экран.

Этап 1 /(((((((!/(/(((/(((!(((/(((((((/((!(((//(((((((((((((!((!(/ П Проект ТззК1 2 !/////////////////////////////!//////////////////////////// /! Ро1пг.П 1)!гпоег Р01МТ Н Жег!пе Р01НТ Н с)авз Ро(п( ( роЫ (с: 1/ Конструктор Ротпъ[бооЫе х = О. боиЫе у = 0): х( х), у( у) [) // Другие нетоды чо!б 5доы() сопят: роЫ (с: бооЬ)е х. у; ((епб!Т /* Р01МТ Н */ 1/1/(1(111(1/1/1/(//11111(11//1//11111/111(1///1/11111(/111 1/ Ро!пс.срр (т!пс!ибе <!озсгеав (Нпс)обе "РотпС.Ы' из!ад павезрасе звб: чотб Ро(пс::5поы() сапзь ( саит ( « х ", " « у ')": ) 1!I(///1!/1(1/1(1(11(111(ll/I/(1/1(1/I(111(1/1111(///1(l/1/ // Тгтапд)е.п У(Тобе( ТК1АК6[Е Н Фбе(тпе ТК!АИ6[Е Н Фтпс1ибе "Ратпъ.Ы' ) сапзс с1авв Тг!ап91е ( риЫтс: Тг!апд1е(Ротпг, Ротпт.

Тг!апд1е(сопзв спаг*); -Тгтап91е(); Ра(пъ 6ет ч1() сопзь ( Ро(пс 6е1 ч2() сопзс [ Ро!пт 6ев чЗ() сопят ( спаг" 6е1Йаве() салат чотб 5бои() сопзс; чотб 5паи5тбеАпбдгеа( роЫтс: асад!с (пъ соилс: рг!часе: сбег* ОЬ110; спаг* паве; Ро!пв ч1, ч2, чЗ; бооЫе а: боиЫе Ь; боиЫе с: Фепб(Т /* ТК1АЙ6[Е Н "/ лотос. сопзд спаг*); // конструктор // конструктор пустота (нулевого) треугольника // деструктор гесигп ч1; ) (1 Получить значение ч'( геъигп ч2; ) // Получить значение ч2 гевогп чЗ; ) /! Получить значение чЗ ( ге:игп паве: ) // Получить иня объекта // Показать объект // Показать стороны и площадь объекта // количество созданных объектов 1/ идентификатор объекта 11 наименование треугольника // вершины l( сторона.

соединяющая ч1 и ч2 /1 сторона. соедикяющая ч2 и чЗ // сторона. соединяющая ч1 и чЗ 11//1!1/111///1/1//!111(111//1(1/11/1//1/1/11(/((1!(1//((/1 //Тгтап91е.срр // Реализаиия класса Тгтапд)е (/тпс)ибе ваЬЬ.Ь> ((!пс)ибе <тазсгеав> ((!пс)ибе <!оваир> Фтпс1ибе свтгтпд> //(/!пс)ибе "Суг105.Ь" В пс1ибе "Тгтапд1е.л" из!п9 павеврасе зтб; // Тог чтзиа1 С+и б.О оЬЗ10 - пеи спаг[зсг)еп(!бепв) + Ц; зСгсру(оЬ110, !бель); соиле++; зрг!пст(Ьи(, "Треугольник $6", соипъ); паве - пеы сбаг[зсг)еп(Ьи() + Ц; загс(у(паве. Ьо[); а = ъцгв((ч1.х - ч2 х) * (ч1.х - ч2.х) + Ь = зцгъ((ч2.х - чЗ.х) * (ч2.х - чЗ.х) ч с зцгъ((ч1.х - чЗ.х) * (ч1.х - чЗ.х) + саит « "Сапзсгисъог 1 Тог: " « оЬ110 " (" « паве « ")" « епб); (ч1.у - ч2.у) * (ч1.у - ч2 у)); (ч2.у - чЗ.у) * (ч2.у - чб.у)); (ч).у - чЗ.у) * (ч1.у - чЗ.у)): // отладочный вывод // Конструнтор пустого (нулевого) треугольника Тг(апд)е::Тгтапд1е(сопзд сдаг* !аеас) ( сбаг бы[[163; оЬЗ10 - пеи спаг[зъг)еп(!бель) + Ц: всгсру(оЬЗ!0, !бенд); соопд++; зрг(пст(биТ.

"Треугольник зб", соопъ); .паве пеы спаг[в<бг)еп(Ьив) + Ц: зсгсру(паве. ЬиТ): а = Ь = с = О: сонь « "Сопзвгиссаг 2 Тог: " « об)10 « " (" « паве « ")" « епб): // отладочный вывод 11 Деструктор Тг(апд)е::-Тгтапд)е() ( саид « "Оезтгиссог Тог: " оЬЗ!0 « епб1; l/ Конструктор Тг(апд!е::Тгтапд1е(Ро!пъ ч1, Ро(пъ ч2, Ро!пс чЗ, слазь спаг* !беп() : ч1( чЦ, ч2( ч2). чЗ( чЗ) ( спаг ба[[16]: бе!есе П аЬ310; бе)есе П папе: ч3.5поы(): // Показать объект чотб Тгтащ)е::5поы() сопвС ( соцС « лаше « " "; ч1.5иаы(); ч2.5поы(): соцС епб1; // Определения треугольников Тг1апд1е Сгтад(р1, р2, рЗ, "сг!ад"): Тг!апд1е Сг1аВ(р), р4. р8, "СгтаВ"): Тг!апд1е Сг1аС(РЛ, р5, рб, "СгтаС"): Тг!апд1е Сгта0(р1. рт, рВ.

"Сгта0"): // Определение массива указателей на треугольники Тг1апд1е" рТг1аП = ( ВСгтад, ВСгтаВ. ВСг1аС. ВСгта0 ); тиС п = з!зеог (ртг)а) / в1зеот (ртгта[01); 1пт. Мело(): 1пС ВеСМцшоег(1пС. 1пС); чотб Ех!СВасп(): чо!б 5иоы(Тг1апд1е* П, тпС): чо1б Моче(Тг1ащ1е* П, 1пС): чо1б Р1ибмах(Тг!апд1е П, 1пС): чотб 1в1пс1цбеб(Тгтащ1еь П, 1пС); !! Инициализация глобальных лерененных 1пС Тгтапд1е::соцпС - О; главная Функция // !пС пю1п() ( // Определения точек Ро!пС р1(0. О): Ро1пС рЗ(1. 0); Ротпс р5(2. 1): Ро1пС рт(2. 2): Ро1пС р2(0.5. 1): Ро1пС р4(О, 4.5): РотпС рб(2, О): РотиС РВ(3. О): // Показать стороны и площадь обьекта чо1б Тгтапд1е::5поы51бедпбдгеа() сопвС ( боцЬ)е р - (а + Ь + с) / 2; боцЬ)е в « зцгС(р * (р - а) * (р - Ь) * (р - с)); .

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