Реферат по предмету "Информатика, программирование"


Анализ треугольника

КУРСОВОЙ ПРОЕКТ
 
ПО ДИСЦИПЛИНЕ
 
«Технология программирования»
 
НА ТЕМУ:
 
«Анализ треугольника»
Ставрополь 2011

Введение
В связи с тем, что сегодня уровень сложности программного обеспеченияочень высок, разработка приложений Windows с использованием только одного какого-либо языка(например, языка С) значительно затрудняется. Программист должен затратитьмассу времени на решение стандартных задач по созданию оконного интерфейса.Реализация технологии связывания и встраивания объектов L потребует отпрограммиста еще более сложной работы. Чтобы облегчить работу программиста, всесовременные компиляторы языка С++ содержат специальные библиотеки классов.Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоватьсяпри программировании средствами более высокого уровня, чем обычные вызовыфункций. За счет этого значительно упрощается разработка приложений, имеющихсложный интерфейс пользователя, облегчается поддержка технологии L и взаимодействие сбазами данных. Кроме того, стало проще производить отладку программ, написанныхна С++. Вместо одной огромной монотонной программы мы имеем дело с наборомаккуратных и удобных в обращении частей. Современные интегрированные средстваразработки приложений Windows позволяют автоматизировать процесс создания приложения.Для этого используются генераторы приложений. Программист отвечает на вопросыгенератора приложений и определяет свойства приложения – поддерживает ли ономногооконный режим, технологию L, справочную систему. Генератор приложений создастприложение, отвечающее требованиям, и предоставит исходные тексты. Пользуясь имкак шаблоном, программист сможет быстро разрабатывать свои приложения. Подобныесредства автоматизированного создания приложений фирма Mirsft включила в продукт Visul ++, разработавбиблиотеку MF (Mirsft Fundtin lsss). MF – замечательный пакет, состоящий из заранее написанного иготового к работе кода. Заполнив несколько диалоговых панелей, можно указатьхарактеристики приложения его тексты, снабженные обширными комментариями. MF Wizrd позволяет создаватьоднооконные и многооконные приложения, а также приложения, не имеющие главногоокна, – вместо него используется диалоговая панель. Прикладную часть приложенияпрограммисту придется создавать самостоятельно. Исходный текст приложениястанет только основой, к которой нужно подключить основное.
 

1. Теоретические основы курсового проекта
/> 
1.1 Теоретические основы разработки Windows-приложений с использованиембиблиотеки MF
БиблиотекаMF (Mirsft Fundtin lsss) – это набор классов ++ и глобальныхфункций, созданных для быстрой разработки Windows-приложений. Этабиблиотека упрощает программирование под Windows и сокращает времяразработки. Код, созданный с ее использованием, легко переносить на другиеплатформы. Библиотека MF упрощает решение таких сложных задач, каксоздание приложений, ориентированных на технологию tiv или на Интернет.С ее помощью легко программировать элементы интерфейса – предварительныйпросмотр документов перед печатью, страницы свойств, контекстные меню инастраиваемые панели инструментов с всплывающими подсказками.
Общийдля всех 32-разрядных Windows-платформ интерфейс прикладногопрограммирования называется Win32. Win32 I – это наборфункций, структур, сообщений, макросов и интерфейсов, с помощью которых можносоздавать программы для Win32. Так как Win32 I – это набор С-функций,их можно использовать в своей программе, просто включив в код соответствующийзаголовочный файл. До появления MF Windows-программы применялитолько средства Win32 I, так что разработка занимала много времени.Опытные программисты старались ускорить ее, создавая библиотеки с кодомосновных, часто используемых функций. С появлением MF такие библиотекистали доступны всем, кто пишет программы на ++.
КлассыMF, инкапсулирующие основные функции Win32 I, упрощают и ускоряютразработку Windows-приложений. Эти классы реализуют сложные функции, скрывающиеся запонятным и компактным интерфейсом.
Например,концепция окна представлена классом MF Wnd. Другими словами, класс Wndинкапсулирует описатель HWND, определенный в Win32 тип данных,содержащий сведения об окне. Это значит, что в классе Wnd естьпеременная-член типа HWND, а его функции-члены замещают те функции Win32I, которым HWND передается в качестве параметра. Например, такаяфункция Win32 I:
BL ShwWindw (HWND hWnd, int nmdShw);
заменена в MF на
BL Wnd: ShwWindw (int nmdShw);
Функции-членыклассов библиотеки MF и заменяемые ими функции Win32 I обычноназываются одинаково.
MF скрывает некоторыенизкоуровневые элементы, но не запрещает их использовать там, где этонеобходимо. Инкапсуляция обеспечивает также защиту значений указателей,например описателей файлов и окон, от повреждения или от неправильного ихиспользования.
БиблиотекаMF подходит для создания любых приложений, кроме самых простых. Однакодаже для таких программ весьма полезны некоторые классы этой библиотеки,например строковые или классы наборов.
ВMF представлены не все функции Win32 I, поэтому иногда требуетсяих прямой вызов. Это необходимо только при низкоуровневом доступе к системе.Например, если Вы разрабатываете утилиту, изменяющую учетную записьпользователя в сети, Вам придется применять сетевые функции Win32 I, таккак в MF нет классов, обеспечивающих доступ к таким функциям.
Библиотека MF содержитбольшую иерархию классов, написанных на С++. В ее вершине находится класс bjt,который содержит различные функции, используемые во время выполнения программыи предназначенные, в частности, для предоставления информации о текущем типе вовремя выполнения, для диагностики, и для сериализации.
Если указатель или ссылка ссылается на объект, производный откласса bjt, то в этом случае предусмотрен механизм определения реального типаобъекта с помощью макроса RUNTIM_LSS(). Хотя в С++ имеется механизм RTTI,механизм, реализованный в MF, намного более эффективен по производительности.Каждый класс, производный от bjt, может по запросу проверить свое внутреннеесостояние и выдать диагностическую информацию. Это интенсивно используется в MFпри отладке.
Сериализация – этомеханизм, позволяющий преобразовать текущее состояние объекта в последовательныйпоток байт, который обычно затем записывается на диск, и восстановить состояниеобъекта из последовательного потока, обычно при чтении с диска. Это позволяетсохранять текущее состояние приложения на диске, и восстанавливать его припоследующем запуске. Некоторые классы порождаются непосредственно от bjt.Наиболее широко используемыми среди них являются mdTrgt, Fil, D, GDIbjt и Mnu.Класс mdTrgt предназначен для обработки сообщений. Класс Fil предназначен дляработы с файлами. Класс D обеспечивает поддержку контекстов устройств. Оконтекстах устройств мы будем говорить несколько позднее. В этот класс включеныпрактически все функции графики GDI. GDIbjt является базовым классом дляразличных DGI-объектов, таких как перья, кисти, шрифты и другие. Класс Mnuпредназначен для манипуляций с меню. От класса mdTrgt порождается очень важныйкласс Wnd. Он является базовым для создания всех типов окон, включая масштабируемые(«обычные») и диалоговые, а также различные элементы управления. Наиболеешироко используемым производным классом является FrmWnd. Как Вы увидите вдальнейшем, в большинстве программ главное окно создается с помощью именноэтого класса. От класса mdTrgt, через класс WinThrd, порождается, наверное,единственный из наиболее важных классов, обращение к которому в MF-программахпроисходит напрямую: Win. Это один из фундаментальных классов, посколькупредназначен для создания самого приложения.

/>/>1.1.1 I функции
Большинство функций,вызываемых в MF-программе, являются членами одного из классов, определенных вбиблиотеке. Большинство функций I доступны через функции-члены MF. Тем неменее, всегда можно обращаться к функциям I напрямую. Иногда это бываетнеобходимым, но все же в большинстве случаев удобнее использовать функции-членыMF.
/>/>1.1.2 Глобальные функции F
В библиотеке есть рядглобальных функций. Все они начинаются с префикса f. Когда MF толькоразрабатывалась, то проект назывался F, litin Frmwrk. После ряда существенныхизменений F была переработана в MF, но прежнее название сохранилось во многихидентификаторах библиотеки и в названиях файлов. Например, очень частоиспользуется функция fMssgB(), отображающая заранее определенное окно сообщения.Но есть и член-функция MssgB(). Таким образом, часто глобальные функцииперекрываются функциями-членами.
Все MF-программы включаютзаголовочный файл FWIN.H. В нем, а также в различных вспомогательных файлах,содержатся описания классов, структур, переменных и других объектов MF. Онавтоматически подключает большинство заголовочных файлов, относящихся к MF, втом числе и WINDOWS.H, в котором определены все функции Windows I и другие объекты,которые используются при традиционном программировании на С и «чистом» I.
Windows взаимодействует спрограммой, посылая ей сообщения.
программа треугольникплощадь прямоугольный
/>/>1.1.3 Циклсообщений
Все приложения Windows должны организовать такназываемый цикл сообщений (обычно внутри функции WinMin()). Вэтом цикле каждое необработанное сообщение должно быть извлечено из очередисообщений данного приложения и передано назад в Windows, которая затем вызываетфункцию окна программы с данным сообщением в качестве аргумента. В традиционныхWindows-программах необходимо самостоятельно создавать и активизировать такойцикл. При использовании MF это также выполняется автоматически. Однако важнопомнить, что цикл сообщений все же существует. Он является неотъемлемой частьюлюбого приложения Windows.
/>/>1.1.4 Создание приложения спомощью Visul ++
О принципах устройства приложения рассказывалось выше. Теперьрассмотрим, как оно создается с помощью Visul ++. Сначала разберем одно важноепонятие – проект. До сих пор приложение рассматривалось, как только каксовокупность объектов базовых и производных классов. Но для обеспечения работыприложения требуется нечто большее – наряду с описанием классов необходимоописание ресурсов, связанных с приложением, нужна справочная система и т.п.Термин «проект» как раз и используется, когда имеется в виду такой общий взглядна приложение.
В среде Visul ++ можно строить различные типы проектов. Такиепроекты после их создания можно компилировать и запускать на исполнение. ФирмаMirsft разработала специальный инструментарий, облегчающий и ускоряющийсоздание проектов в среде Visul ++. Например, мастер MF Wizrd () позволяетсоздать проект, Windows-приложения которое имеет однодокументный,многодокументный или диалоговый интерфейс и использует библиотеку MF.
/>/>1.1.5 Инструментальноесредство – lssWizrd (мастер классов)
Создаваемый остов приложения составлен так, что в дальнейшей работес проектом можно использовать другое инструментальное средство – lssWizrd(мастер классов), предназначенное для создания остовов новых производныхклассов. Еще одно основное назначение lssWizrd в том, что он создает остовы дляпереопределяемых методов. Он позволяет показать все сообщения, приходящиеклассу, и создать остов обработчика любого из этих сообщений. Это только двеосновные функции lssWizrd. Он не всесилен, но его возможности довольно велики.
Средство lssWizrd предоставляет широкий спектр услуг. Он позволяетне только добавлять к существующему классу новые методы и данные.
/>Создание нового класса.
При помощи lssWizrd можно добавить новый класс, созданный наоснове базовых классов. В качестве базового класса можно использовать классы, наследованныеот класса mdTrgt или класса Rrdst. Для наследования классов от других базовыхклассов использовать средства lssWizrd нельзя. Такие классы надо создаватьвручную, непосредственно в текстовом редакторе.
Полученная заготовка класса полностью работоспособна. Ее можно дополнитьпо своему усмотрению новыми методами и данными. Эту работу можно выполнитьвручную, но гораздо лучше и проще воспользоваться услугами lssWizrd. За счетиспользования lssWizrd процедура создания собственного класса значительноускоряется и уменьшается вероятность совершить ошибку во время объявленияметодов.
/>Включение в класс новых методов.
Очень удобно использовать lssWizrd для включения в состав классановых методов. Можно добавлять к классу методы, служащие для обработкисообщений Windows и команд от объектов, а также методы, переопределяющие виртуальныеметоды базовых классов.
lssWizrd не только позволяет добавить в класс новые методы, но иудалить их. lssWizrd самостоятельно удалит объявление метода из класса.
/>Включение в класс новых элементов данных.
lssWizrd позволяет включать в класс не только новые методы, но иэлементы данных, связанные с полями диалоговых панелей, форм просмотра и формдля просмотра записей баз данных и полей наборов записей. lssWizrd используетспециальные процедуры, чтобы привязать созданные им элементы данных к класса кполям диалоговых панелей. Эти процедуры носят названия «обмен даннымидиалоговой панели» и «проверка данных диалоговой панели» (Dilg Dt hng nd DilgDt Vlidtin – DD/DDV). Чтобы привязать поля из наборов записей к переменным, используетсяпроцедура обмена данными с полями записей (Rrd Fild hng – RF).
/>Процедуры DD/DDV и RF.
Значительно упрощают программисту работу с диалоговыми панелями.Они позволяют связать поля диалоговых панелей и переменные. Когда пользовательредактирует поля диалоговых панелей, процедуры DDV проверяют введенные значенияи блокируют ввод запрещенных значений. Затем процедуры DD автоматическикопируют содержимое полей диалоговых панелей в привязанные к ним элементыданных класса. И наоборот, когда приложение изменяет элементы данных класса,привязанные к полям диалоговой панели, процедуры DD могут сразу отобразитьновые значения полей на экране компьютера. Процесс получения и обработкисообщений может показаться чересчур сложным, но, тем не менее, ему должныследовать все Windows-программы. К счастью, при использовании библиотеки MFбольшинство частных деталей скрыты от программиста, хотя и продолжают неявноприсутствовать в программе. В простейшем случае программа, написанная с помощьюMF, содержит два класса, порождаемые от классов иерархии библиотеки: класс,предназначенный для создания приложения, и класс, предназначенный для созданияокна. Другими словами, для создания минимальной программы необходимо породитьодин класс от Win, а другой – от FrmWnd. Эти два класса обязательны длялюбой программы. Кроме создания вышеупомянутых классов, в программе такжедолжна быть организована обработка всех сообщений, поступающих от Windows. В данном примере программаеще ничего полезного не делает, поэтому отвечать на каждое сообщение не нужно.MF обработает все сообщения, которые нас не интересуют. Тем не менее, в этомпримере присутствует карта откликов на сообщения, или просто карта сообщений.Позже мы рассмотрим ее подробнее. Как уже упоминалось, MF – это базовый набор(библиотека) классов, написанных на языке С++ и предназначенных для упрощения иускорения процесса программирования для Windows. Библиотека содержитмногоуровневую иерархию классов, насчитывающую около 200 членов. Они даютвозможность создавать Windows-приложения на базе объектно-ориентированногоподхода. С точки зрения программиста, MF представляет собой каркас, на основекоторого можно писать программы для Windows.
/>/>1.1.6 Преимущество MFбиблиотек
Библиотека MF разрабатывалась для упрощения задач, стоящих передпрограммистом. Как известно, традиционный метод программирования под Windowsтребует написания достаточно длинных и сложных программ, имеющих рядспецифических особенностей. В частности, для создания только каркаса программытаким методом понадобится около 75 строк кода. По мере же увеличения сложностипрограммы ее код может достигать поистине невероятных размеров. Однако та жесамая программа, написанная с использованием MF, будет примерно в три разаменьше, поскольку большинство частных деталей скрыто от программиста.
Одним из основных преимуществ работы с MF является возможностьмногократного использования одного и того же кода. Так как библиотека содержитмного элементов, общих для всех Windows-приложений, нет необходимости каждыйраз писать их заново. Вместо этого их можно просто наследовать (говоря языкомобъектно-ориентированного программирования). Кроме того, интерфейс,обеспечиваемый библиотекой, практически независим от конкретных деталей, егореализующих. Поэтому программы, написанные на основе MF, могут быть легкоадаптированы к новым версиям Windows (в отличие от большинства программ,написанных обычными методами).
Еще одним существенным преимуществом MF является упрощениевзаимодействия с прикладным программным интерфейсом (I) Windows. Любоеприложение взаимодействует с Windows через I, которое содержит несколько сотфункций. Внушительный размер I затрудняет попытки понять и изучить его целиком.Зачастую, даже сложно проследить, как отдельные части I связанны друг с другом!Но поскольку библиотека MF объединяет (путем инкапсуляции) функции I влогически организованное множество классов, интерфейсом становится значительнолегче управлять. Поскольку MF представляет собой набор классов, написанных наязыке С++, поэтому программы, написанные с использованием MF, должны быть в тоже время программами на С++. Для этого необходимо владеть соответствующимизнаниями. Для начала необходимо уметь создавать собственные классы, пониматьпринципы наследования и уметь переопределять виртуальные функции. Хотяпрограммы, использующие библиотеку MF, обычно не содержат слишком специфическихэлементов из арсенала С++, для их написания тем не менее требуются солидныезнания в данной области [7].

2. Описание программного продукта
 
2.1 Общие сведения
Данная программа написана на языке Visul ++ 6.0. После запускапрограмма предлагает ввести длины сторон треугольника и рассчитать некоторыеего характеристики.
2.2 Функциональное назначение
Данная программа предназначена для анализа треугольника на наличиев нем прямого угла, а также для расчета периметра, площади, радиуса вписанной иописанной окружности.
2.3 Спецификацияпрограммы
Программа называется Tringl. В программе были разработаны три классаи их методы. Интерфейс и все вычисления были выполнены в одном классе,описывающем главное диалоговое окно (рисунок 2.3.1). Класс называетсяTringlDlg. Он наследован от класса Dilg.
/>
Рисунок 2.3.1 – Главное окно программы

Ввод длин сторон треугольника осуществляется через элементы dit. Сними связаны атрибуты класса m_lin_1, m_lin_2, m_lin_3. Эти атрибуты имеют типint. Минимальным значение длины стороны является 1. У пользователя имеетсявозможность ввести значения вручную или использовать для этого элементы Sin. Впрограмме реализована обработка события UD_DLTS данных элементов. Функции,реализующие обработку данных событий, называются nDltsSin1, nDltsSin2, nDltsSin3. В данные функциипередается указатель NM_UDWN* NMUDwn. Через него можно получить значениеатрибута iDlt (значение, на которое следует увеличить или уменьшить связанное сэлементом число).
Если пользователь попытается ввести число, не соответствующеецелому типу, программа выдаст соответствующее сообщение об этом.
После ввода длин сторон пользователю необходимо нажать на кнопку«Рассчитать». С этой кнопкой связана функция nlult().
Сначала функция проверяет, правильно ли задан треугольник. Этопроисходит следующим образом. По известной формуле Герона рассчитываетсяплощадь треугольника.
/>,
где />,
/>длины сторон треугольника
В случае, значение выражения под корнем равно нулю или меньшенуля, считается, что такого треугольника не существует. В этом случае программавыдает соответствующее сообщение (рисунок 2.3.2).

/>
2.3.2. Сообщение о некорректном вводе
Если треугольник задан правильно, программа вычисляет, является лион прямоугольным. Для этого использована теорема Пифагора:
/>
Программа находит наибольшую сторону (предполагаемую гипотенузу) ипроверяет на истинность условие (2). Если оно истинно, то выдается сообщение«Треугольник прямоугольный». В противном случае, «Треугольник не прямоугольный»(рисунок 2.3.3).
/>/>
Рисунок 2.3.3. Анализ треугольника на наличие прямого угла
Далее функция рассчитывает периметр треугольника (3), радиусописанной окружности (4) и радиус вписанной окружности (5).
/>
/>
/>

После получения результатов, функция преобразует их в текстовыйвид. Для этого используется String m_rsult и функция Frmt. Переменная m_rsult связана с элементом Stti.Результат вычислений появится на форме.
/>
Рисунок 2.3.4. Результат вычислений
Таблица 2.1 – Спецификация разработанных классовИмя класса Член класса Способа доступа Назначение TringlDlg BL nInitilDilg() защищенный Выставляет значения длин сторон TringlDlg vid nlult() защищенный Производит все вычисления
2.4 Требования поустановке
Для того чтобы создать приложение, просмотреть текст программы илизапустить её на выполнение – необходимо, чтобы на компьютере был установленасреда Mirsft Visul ++. Чтобы просмотреть текст программы Funtin или запустить её на выполнение– надо скопировать с носителя папку с проектом на жёсткий диск компьютера. Еслинадо просмотреть текст программы, шаблоны диалоговых окон и др., то следуетоткрыть файл Funtin.dsw, являющийся файлом проекта.
/>/> 

2.5 Требования ктехническому обеспечению
Для корректной работы программы необходимы IBM совместимыйкомпьютер, операционная система семейства Windows версии 95/98/NT/, оперативная память 128 Mb и выше, свободное место надиске 3153 Кбайт под размещение приложения.
/>2.6 Вызов программы.Входные и выходные данные
Программа представляет собой единственный файл-приложение Tringl., запускаемое в любойоперационной системе семейства Windows.
Входными данными является введенные пользователем длины сторонтреугольника. Результаты своих вычислений программа выводит на экран.
/>2.7 Тестированиепрограммы
Программа тестировалась стохастическим методом. Тестировалсязапуск программы, задавались неправильно заданные треугольники, вводились числабольшого размера, ответа и подсчет результата. Выявленные незначительные ошибкифункционирования были устранены.
В общем, программа работает без сбоев и может широко использоватьсяпри обучении математике школьников и студентов.

Заключение
В ходе выполнения курсового проекта было создано Windows-приложение,которое вычисляет различные характеристики треугольника, заданногопользователем. Данная программа была написана на Mirsft Visul ++ 6.0 с использованиембиблиотеки MF.
В ходе разработки курсового проекта была освоена работа с Mirsft Visul ++. В результате чего быланаписана программа. Была освоена работа с различными элементами интерфейса,работа с мастерами Visul ++ 6.0.
Такие простые приложения и ему подобные, могут широко внедряться вразличных сферах человеческой деятельности. Можно написать подобные программына языке программирования Mirsft Visul ++ с использованием библиотеки MF для создания другихприложений.

Список литературы
1. «Основы программирования на Visul ++», методические указанияпо курсу «Технология программирования» для специальности 220200,071900
2. Кейт Грегорий «Использование Visul ++ 6.0», М, СПб, К.:издательский дом «Вильямс», 2000.
3. Черносвитов А., «Visul ++ и MF. Курс MSD для профессионалов.» – СПб: Издательство «Питер», 2000.
4. Паппас К., Мюррей У. «Полное руководство по Visul ++». Минск: ООО «Попурри»,1999.
5. Марк Луис. «Visul ++ 6». – М.: Лаборатория базовых знаний, 1999.
6. Гилберт Стивен, Маккарти Билл. «Программирование на Visul ++ 6. Этюды профессионалов»– К.: Издательство «ДиаСофт», 1999.
7. Баженова И.Ю. «Visul ++6.0 (VISUL STUDI1998). Уроки программирования», М.: Диалог – МИФИ, 1999
8. А.В. Фролов, Г.В. Фролов «Mirsft Visul ++ и MF. Программирование для Windows 95 и Windows NT» в 2-х ч. (часть1)(библиотека системного программиста; т. 24) М.: Диалог – МИФИ, 1997
9. А.В. Фролов, Г.В. Фролов «Mirsft Visul ++ и MF. Программирование для Windows 95 и Windows NT». (часть2) (библиотекасистемного программиста; т. 28) М.: Диалог – МИФИ, 1997
10. Х.А. Цвиринько, В.Д. Коровина «Методические рекомендациипо оформлению дипломных и курсовых проектов (работ)», Ставрополь: изд–воСевКавГТУ, 2000

Приложение 1
Диаграмма классов
/>

Приложение 2
Листинг программы
 // TringlDlg.: imlmnttin fil
 //
#inlud «stdf.h»
#inlud «Tringl.h»
#inlud «TringlDlg.h»
#inlud «mth.h»
#ifdf _DBUG
#dfin nw DBUG_NW
#undf THIS_FIL
stti hr THIS_FIL[] = __FIL__;
#ndif
 /////////////////////////////////////////////////////////////////////////////
 // butDlg dilg usd fr but
lss butDlg: ubli Dilg
{
ubli:
butDlg();
 // Dilg Dt
 // {{F_DT(butDlg)
num {IDD = IDD_BUTB};
 // }} F_DT
 // lssWizrd gnrtd virtul funtinvrrids
 // {{F_VIRTUL(butDlg)
rttd:
virtul vid DDthng (Dthng* D); //DD/DDV surt
 // }} F_VIRTUL
 // Imlmnttin
rttd:
 // {{F_MSG(butDlg)
 // }} F_MSG
DLR_MSSG_M()
};
butDlg:butDlg(): Dilg (butDlg:IDD)
{
 // {{F_DT_INIT(butDlg)
 // }} F_DT_INIT
}
vid butDlg:DDthng (Dthng* D)
{
Dilg:DDthng(D);
 // {{F_DT_M(butDlg)
 // }} F_DT_M
}
BGIN_MSSG_M (butDlg, Dilg)
 // {{F_MSG_M(butDlg)
 // N mssg hndlrs
 // }} F_MSG_M
ND_MSSG_M()
 /////////////////////////////////////////////////////////////////////////////
 // TringlDlg dilg
TringlDlg: TringlDlg (Wnd* rnt/*=NULL*/)
: Dilg (TringlDlg:IDD, rnt)
{
 // {{F_DT_INIT(TringlDlg)
m_lin_1 = 0;
m_lin_2 = 0;
m_lin_3 = 0;
m_rsult = _T(«»);
 // }} F_DT_INIT
 // Nt tht LdIn ds nt rquir subsquntDstrIn in Win32
m_hIn = fGt()->LdIn (IDR_MINFRM);
}
vid TringlDlg:DDthng (Dthng* D)
{
Dilg:DDthng(D);
 // {{F_DT_M(TringlDlg)
DD_Tt (D, ID_DIT1, m_lin_1);
DD_Tt (D, ID_DIT2, m_lin_2);
DD_Tt (D, ID_DIT3, m_lin_3);
DD_Tt (D, ID_STTI_1, m_rsult);
 // }} F_DT_M
}
BGIN_MSSG_M (TringlDlg, Dilg)
 // {{F_MSG_M(TringlDlg)
N_WM_SSMMND()
N_WM_INT()
N_WM_QURDRGIN()
N_BN_LIKD (ID_BUTTN1, nlult)
N_NTIF (UDN_DLTS, ID_SIN1, nDltsSin1)
N_NTIF (UDN_DLTS, ID_SIN2, nDltsSin2)
N_NTIF (UDN_DLTS, ID_SIN3, nDltsSin3)
N_NTIF (NM_UTFMMR, ID_SIN3, nutfmmrSin3)
 // }} F_MSG_M
ND_MSSG_M()
 /////////////////////////////////////////////////////////////////////////////
 // TringlDlg mssg hndlrs
BL TringlDlg:nInitDilg()
{
Dilg:nInitDilg();
 // dd «but…» mnu itm t sstm mnu.
 // IDM_BUTB must b in th sstm mmndrng.
SSRT((IDM_BUTB & 0FFF0) ==IDM_BUTB);
SSRT (IDM_BUTB
Mnu* SsMnu = GtSstmMnu(FLS);
if (SsMnu!= NULL)
{
String strbutMnu;
strbutMnu. LdString (IDS_BUTB);
if (! strbutMnu. Ismt())
{
SsMnu->ndMnu (MF_SRTR);
SsMnu->ndMnu (MF_STRING, IDM_BUTB,strbutMnu);
}
}
 // St th in fr this dilg. Thfrmwrk ds this utmtill
 // whn th litin's min windw is nt dilg
StIn (m_hIn, TRU); // St big in
StIn (m_hIn, FLS); // St smll in
 // TD: dd tr initiliztin hr
m_lin_1 = 1;
m_lin_2 = 1;
m_lin_3 = 1;
UdtDt(fls);
rturn TRU; // rturn TRU unlss u stth fus t ntrl
}
vid TringlDlg:nSsmmnd (UINT nID, LRMlrm)
{
if ((nID & 0FFF0) == IDM_BUTB)
{
butDlg dlgbut;
dlgbut.DMdl();
}
ls
{
Dilg:nSsmmnd (nID, lrm);
}
}
 // If u dd minimiz buttn t urdilg, u will nd th d blw
 // t drw th in. Fr MF litins usingth dumnt/viw mdl,
 // this is utmtill dn fr u b thfrmwrk.
vid TringlDlg:nint()
{
if (IsIni())
{
intD d(this); // dvi ntt fr inting
SndMssg (WM_INRSBKGND, (WRM) d. GtSfHd(),0);
 // ntr in in lint rtngl
int In = GtSstmMtris (SM_IN);
int In = GtSstmMtris (SM_IN);
Rt rt;
GtlintRt(&rt);
int = (rt. Width() – In + 1) / 2;
int = (rt. Hight() – In + 1) / 2;
 // Drw th in
d. DrwIn (, m_hIn);
}
ls
{
Dilg:nint();
}
}
 // Th sstm lls this t btin th ursrt disl whil th usr drgs
 // th minimizd windw.
HURSR TringlDlg:nQurDrgIn()
{
rturn (HURSR) m_hIn;
}
vid TringlDlg:nlult()
{
 // TD: dd ur ntrl ntifitin hndlr dhr
UdtDt(tru);
int rimtr = m_lin_1+ m_lin_2+ m_lin_3;
dubl = (dubl) (m_lin_1+ m_lin_2+m_lin_3)/2;
dubl s = sqrt(*(– (dubl) m_lin_1)*(– (dubl)m_lin_2)*(– (dubl) m_lin_3));
if (s==0.0 || s
{
fMssgB («Треугольник задан неправильно»);
rturn;
}
dubl R_= (dubl) (m_lin_1*m_lin_2*m_lin_3)/(4*s);
dubl R_V = s/;
 /////// Для начала определим, является ли треугольникпрямоугольным
 /////// Определим самую большую сторону
int m_lin = m_lin_1;
int m_ind = 1;
if (m_lin_2>m_lin)
{
m_lin = m_lin_2;
m_ind = 2;
}
if (m_lin_3>m_lin)
{
m_lin = m_lin_3;
m_ind = 3;
}
bl rm=fls;
swith (m_ind)
{
s 1: if (m_lin*m_lin==m_lin_2*m_lin_2+m_lin_3*m_lin_3)
rm = tru; brk;
s 2: if (m_lin*m_lin==m_lin_1*m_lin_1+m_lin_3*m_lin_3)
rm = tru; brk;
s 3: if (m_lin*m_lin==m_lin_2*m_lin_2+m_lin_1*m_lin_1)
rm = tru; brk;
};
if (rm)
fMssgB («Треугольник прямоугольный»);
ls
fMssgB («Треугольник не прямоугольный»);
m_rsult. Frmt («Периметр % d, Площадь % f, Радиус описанной окружности % f, Радиус вписанной окружности % f», rimtr, s, R_, R_V);
UdtDt(fls);
}
vid TringlDlg:nDltsSin1 (NMHDR* NMHDR,LRSULT* Rsult)
{
NM_UDWN* NMUDwn = (NM_UDWN*) NMHDR;
 // TD: dd ur ntrl ntifitin hndlr dhr
UdtDt(tru);
m_lin_1-=NMUDwn->iDlt;
if (m_lin_1==0)
m_lin_1=1;
UdtDt(fls);
*Rsult = 0;
}
m_lin_3=1;
UdtDt(fls);
vid TringlDlg:nutfmmrSin3 (NMHDR* NMHDR,LRSULT* Rsult)
{
 // TD: dd ur ntrl ntifitin hndlr dhr
*Rsult = 0;
}


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.