Разработка программы создания и уничтожения объектов в среде C++Builder

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    443,81 Кб
  • Опубликовано:
    2012-08-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы создания и уничтожения объектов в среде C++Builder

Содержание

Введение

1. Постановка задачи

2. Алгоритм работы программы

3. Средства разработки

4. Пошаговое описание разработки приложения

Шаг 1

Шаг 2

Шаг 3

Шаг 4

Шаг 5

Шаг 6

Шаг 7

Шаг 8

5. Код программы

Листинг 1. Код основного модуля Unit1.cpp

Листинг 2. Код header-файла основного модуля программы Unit1.h

Листинг 3. Код модуля обработки обычных/десятичных дробей

Введение

Система визуального объектно-ориентированного программирования C++Builder была выбрана для реализации проекта, потому что она позволяет создавать прикладные программы, основанные на принципах взаимодействия объектов. Известно, что совокупность объектов в качестве кнопок, разделов меню, окон редактирования, списков ждут обработчиков событий. При выполнении событий объекты получают сообщения и реагируют на них: выполняют некоторые вычисления, разворачивают список, заносят символы в окно редактирования. Определим объект как некую совокупность данных и способов работы с ними. Важнейшее значение имеют принципы скрытия данных, заключающиеся в том, что внешним объектам и пользователю прямой доступ к данным, как правило, запрещен. Во-первых, для надежного функционирования объекта надо поддерживать целостность и непротиворечивость данных. Во-вторых, необходимо изолировать внешние объекты от особенностей внутренней реализации данных. Чтобы выдержать принцип скрытия данных, в объекте обычно определяются процедуры и функции (методы), обеспечивающие все необходимые операции с данными: их чтение, преобразование, запись. Совокупность данных и методов называется свойством. Свойства можно устанавливать в процессе проектирования, их можно изменять программно во время выполнения прикладной программы. Помимо методов, работающих с отдельными данными, в объекте имеются методы, работающие со всей их совокупностью, меняющие их структуру. Таким образом, объект является совокупностью свойств и методов. Средой взаимодействия объектов являются сообщения, генерируемые в результате различными событиями, которые могут наступать вследствие работы самих объектов. В каждом объекте определено множество событий, на которые он может реагировать. Внешнее управление объектом осуществляется через обработчики событий. Эти обработчики обращаются к методам и свойствам объекта. Начальные значения данных объекта могут задаваться также в процессе проектирования установкой различных свойств.

Представление о программе как о некоторой фиксированной совокупности объектов не является полным. Программа - это не просто какая-то предопределенная совокупность объектов. В процессе работы объекты могут создаваться и уничтожаться. Структура программы является динамическим образованием, меняющимся в процессе выполнения. Основная цель создания и уничтожения объектов - экономия ресурсов компьютера и, прежде всего, памяти.

1. Постановка задачи

Написать программу, выполняющую функции инженерного калькулятора. Программа также может выполнять некоторые иные функции.

Заявленные функции:

Выполнение простых арифметических операций

Выполнение прямых и обратных тригонометрических операций, в системах Degree/Radian/Grad

Выполнение операций "единица на число"

Выполнение операций возведения в степень

Выполнение операций с плавающей точкой

Работа с ячейками памяти (запись/чтение)

Перевод чисел из одной системы счисления в другую

Работа с дробями: перевод из обыкновенной дроби в десятичную и наоборот

В данную версию программы по причине нехватки времени не вошли следующие из задуманных функций: конвертор величин, модуль отрисовки графиков простых функций, статистические операции, некоторые специфические инженерные расчеты (электрические)

. Алгоритм работы программы

Все операции производятся над числами, записанными в текстовой строке поля Edit4. Для ввода значения в поле при нажатии кнопки происходит прибавление символа к уже существующей строке. Также для реализации многих функций, таких, как перевод величин из одной системы счисления в другую, расчет тригонометрических функций в Degree/Radian/Grad, включение вторичных (инверсных) функций, операции с плавающей точкой предусмотрены переменные, определяющие текущее состояние приложения:

SecondState - состояние, определяющее, включен ли режим инверсных функций

EEState - состояние, определяющее, включен ли режим ввода множителя

PMState - состояние, определяющее отрицательная ли степень числа или нет

DotState - состояние, определяющее, содержится ли в текущем числе разделитель целой и дробной части

OState - состояние, определяющее, включена ли какая-либо операция, или нет. Необходим для операций, в которых фигурируют два числа (простые арифметические, возведение числа в степень)- состояние, определяющее положение системы Degree/Radian/Grad- состояние, определяющее текущую систему счисления- состояние, определяющее код операции. Дело в том, что для операций над двумя числами при нажатии кнопки со знаком операции передается этой переменной свой код, а сами операции производятся при нажатии клавиши "="

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

Общий принцип работы с дробными числами состоит в нахождении наибольшего общего делителя числителя и знаменателя, и последующего деления их на НОД. Таким образом мы приводим систему к неприводимому состоянию. Перевод десятичных дробей осуществляется путем взятия дробной части, нахождения НОД ее и множителя 10n, где n - число знаков в дробной части, и последующего деления на НОД. Также в редакторе реализованы простые арифметические операции над дробями, перевод числа из основного окна, а также результатов в основное окно.

. Средства разработки

. PageControl - многостраничный компонент

Таблица №1

Свойство

Описание

ActivePage

Задает активную страницу

Align

Способ выравнивания многостраничного компонента в пределах владельца.

MultiLine

Если равно true, то закладки располагаются в несколько рядов

Pages

Массив страниц. Свойство Pages доступно только из программы.

PageCount

Общее количество страниц. Доступно только из программы

TabWidth, TabHeight

Ширина и высота закладки. Если эти свойства равны нулю, то ширина и высота каждой закладки подбираются автоматически по ширине и высоте содержащегося на ней текста


. Label - метка


Таблица №2

Свойство

Объявление / Описание

AutoSize

Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize равно false, то выравнивание текста внутри компонента определяется свойством Alignment

Caption

AnsiStrmeCaption

 

Строка текста, отображаемая меткой. Может содержать символ ускоренного доступа к элементу, указанному свойством Focus-Control

Color

Определяет цвет фона метки

FocusControl

Определяет оконный компонент, получающий фокус при нажатии пользователем клавиши быстрого доступа метки (см. пояснения выше в описании Label)

Font

Graphics: :TFont* Font Определяет атрибуты шрифта

Layout

TTextLayout Layout Определяет выравнивание текста в поле метки по вертикали

ParentColor

bool ParentColor Определяет (при значении true), что для фона метки будет заимствован цвет родительского компонента. В этом случае фон метки не заметен и видна только ее надпись - Caption

ShowAccelChar

bool ShowAccelChar Определяет, как амперсанд отображается в тексте метки (см. пояснения выше в описании Label)

Wordwrap

Указывает, переносится ли текст на новую строку, если он превышает ширину метки, а высота метки позволяет разместить в ней несколько строк


. Button - кнопка

Таблица №3

Свойство

Объявление / Описание

Action

Определяет действие, связанное с данной кнопкой

Cancel

Определяет, будет ли обрабатываться событие кнопки OnClick при нажатии клавиши Esc

Caption

Надпись на кнопке

Default

Определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе

ModalResult

Определяет значение свойства модальной формы ModalResult, задаваемое автоматически при щелчке на данной кнопке

TabStop

Определяет возможность доступа пользователя к кнопке с помощью клавиши Tab



Таблица №4

Событие

Описание

OnClick

Соответствует щелчку мыши на кнопке или нажатию клавиш быстрого доступа

4. MainMenu - главное меню

Таблица №5

Свойство

Объявление / Описание

AutoHotKeys

Определяет, могут ли «горячие» клавиши элементов меню устанавливаться автоматически

AutoLine Reduction

Указывает, проверяет ли и исправляет ли C++Builder появление в начале или конце подменю разделителей или двух разделителей подряд

AutoMerge

Определяет, объединятся ли главные меню вспомогательных форм с главным меню основной формы

Images

Определяет список изображений, которые могут отображаться в разделах меню слева от надписи. Изображения конкретных разделов указываются свойством Imagelndex (индексом массива Images) разделов меню Items типа TMenuItem

Items

Список элементов (разделов) меню типа TMenuItem


. Memo - многострочное окно редактирования


Таблица №6

 

Свойство

Объявление / Описание

 

Align

Определяет способ выравнивания компонента в контейнере (родительском компоненте)

 

Alignment

Управляет выравниванием текста: taLeftJustify - влево, ta-RightJustify - вправо, taCenter - по центру. Значение по умолчанию - влево

 

Anchors

Определяет привязку данного компонента к родительскому при изменении размеров последнего

CanUndo

Указывает, содержит ли компонент изменения, которые можно отменить. Доступ только для чтения

Font

Graphics: :TFont* Font Определяет атрибуты шрифта

Lines

Строки текста - объект типа TStrines

MaxLength

Указывает максимальное количество символов, которое пользователь может вводить в компонент. При значении 0 длина текста неограничена

Modified

Указывает, редактировался ли пользователем текст в компоненте

PopupMenu

Определяет всплывающее меню, связанное с данным компонентом

Readonly

Указывает, может ли пользователь изменять текст в компоненте

SelLength

Определяет количество выделенных символов в тексте

SelStart

Указывает позицию первого выделенного символа в тексте или, если выделения нет, то позицию курсора

Text

Текст окна в виде одной строки

WantReturns

Указывает, можно ли вставить в текст символы возврата каретки

WantTabs

Указывает, можно ли вставить в текст символы табуляции

Wordwrap

Указывает, переносится ли текст на новую строку, если он превышает ширину компонента


Основные события

Таблица №7

Событие

Описание

OnChange

Наступает, когда текст в окне может быть изменился. Свойство Modified показывает, действительно ли произошло изменение

OnKeyDown

Событие наступает при нажатии пользователем любой клавиши. В обработчике можно распознать нажатую клавишу

OnKevPress

Событие наступает при нажатии пользователем клавиши символа. В обработчике можно распознать вводимый символ и при необходимости изменить его или запретить его ввод



6. Image - контейнер графического изображения

Таблица №8

Свойство

Объявление / Описание

AutoSize

Указывает, изменяется ли автоматически размер компонента, подстраиваясь под размер изображения. По умолчанию false - не подстраивается

Canvas

Определяет поверхность (холст, канву) для рисования пером Реп и кистью Brush, для наложения друг на друга нескольких изображений. Доступ только для чтения.

Center

Указывает, должно ли изображение центрироваться в поле компонента, если его размеры меньше размеров поля. При значении false изображение располагается в верхнем левом углу поля. Свойство не действует, если AutoSize установлено в true или если Stretch установлено в true и Picture содержит не пиктограмму

Incremental Display

Указывает, должно ли изображение частично рисоваться во время медленных операций с большими изображениями. Вместо такого рисования часто можно использовать индикацию процесса обработкой событий OnProgress

Picture

Определяет отображаемый графический объект типа TPicture. Может загружаться программно или во время проектирования с помощью Picture Editor

Stretch

Указывает, должны ли изменяться размеры изображения, подго-няясь под размеры компонента. Учтите, что изменение размеров изображения приведет к его искажению, если соотношение сторон графического объекта и компонента Image не одинаково


. Edit - Во всех рассматриваемых окнах вводимый и выводимый текст содержится в свойстве Text типа AnsiString. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и панелях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается и пользователь может перемещаться по нему с помощью курсора. Свойство AutoSize в окнах редактирования имеет смысл, отличный от смысла аналогичного свойства меток: автоматически подстраивается под размер текста только высота, но не ширина окна.


8. PopupMenu - контекстное всплывающее меню

Таблица №9

Свойства

Описание

  Alignment

Определяет место, в котором появляется меню относительно курсора мыши paLeft - левый верхний угол меню совпадает с позицией кypcopa мыши paCenler - середина верхнего края совпадает с позицией курсора мыши paRight - правый угол меню совпадает с позицией курсора мыши.

AutoPopup

Если равно true то меню всплывает автоматически после щелчка правой кнопкой мыши. Если равно false то за отображение меню отвечает программист

Items

Обеспечивает доступ к пунктам меню


. Пошаговое описание разработки приложения

Шаг 1.

Приступим к реализации проекта. Выбрав в меню File опцию NewApplication, начнем новый проект: Form1 переименуем в «Расчет генераторов на операционных усилителях», размеры Form1 скорректируем.

Рис. 1 Порядок реализации проекта

Шаг 2.

Расставляем на форме необходимые элементы: элементы Edit - для полей ввода, BitBtn - для реализации функций, Label - для индикации состояний калькулятора, MainMenu - для реализации функций главного меню в приложении

Рис. 2 Форма с расположенными на ней элементами

прикладная программа объект визуальный программирование

На форме присутствует меню со следующими пунктами:

Рис. 3 Элементы меню

Шаг 3.

Переименуем компоненты в соответствии с их функцией, для облегчения ориентирования при написании кода: - Btn2nd

 - BtnC

 - BtnNazad

 - BtnDRG

 - BtnLOG

 - BtnLN

 - BtnHYP

 - BtnSIN

 - BtnCOS

 - BtnTAN

 - BtnPi

 - Btn1toX

 - BtnX2

 - BtnX3

 - BtnYinX

 - BtnDEC

 - BtnBIN

 - BtnOCT

 - BtnHEX

 - BtnEE

 - BtnLS

 - BtnPS

 - BtnDel

 - Btn0

 - BtnDot

 - BtnPM

 - Btn1

 - Btn2

 - Btn3

 - Btn4

 - Btn5

 - Btn6

 - Btn7

 - Btn8

 - Btn9

 - Btn_A

 - Btn_B

 - Btn_C

 - Btn_D

 - Btn_E

 - Btn_F

 - BtnUmnoj

 - BtnMinus

 - BtnPlus

 - BtnRavno

 - L2nd

 - LDEG

 - LRAD

 - LGRAD

 - LDEC

 - LBIN

 - LOCT

 - LHEX

Рис. 4 Имена кнопок на форме

Рис. 5 Label1, EditM1, ButtonM1, ButtonMR1, Label2, EditM2, ButtonM2, ButtonMR2, Label3, EditM3, ButtonM3, ButtonMR3

Рис. 6 Edit4

Шаг 4.

Реализуем переключение функций в приложении (кнопка Btn2nd)

Для этого обработаем событие OnClick кнопки Btn2nd (смотри листинг программы)

Рис.7 Окно программы с включенным выбором вторичных функций

Шаг 5.

Определим действия для каждой кнопки (смотреть листинг программы)

Далее следует несколько примеров работы функций:

Рис. 8 Реализация операции сложения

Рис. 9 Реализация операции синус


Рис. 10 Реализация перевода чисел в различные системы счисления

Шаг 6.

Создадим новую форму Form2, в которую поместим элементы для отображения окна "О программе". Сюда входят компоненты TImage и компоненты Label

Рис. 11 Форма окна "О программе"

Для вызова этого окна в пункте меню "Справка -> О программе" создадим обработчик вызова формы:


void __fastcall TForm1::N8Click(TObject *Sender)

{->Visible=true;

}

Шаг 7.

Аналогичным образом создадим новую форму Form3, куда поместим элементы, необходимые для реализации перевода обыкновенных дробей в десятичные и обратно

Рис. 12 Форма окна редактора дробных чисел

На данной форме присутствуют 8 элементов TEdit, 20 элементов TButton, 4 элемента TGroupBox

Элементы имеют следующие имена:

Элементы группы "Число1. Правильная дробь":

Edit1, Edit2, Edit3

"В правильную дробь" - Button1

"В десятичную дробь" - Button2

"В основное окно" - Button3

Элементы группы "Число2. Правильная дробь":

Edit5, Edit6, Edit7

"В правильную дробь" - Button9

"В десятичную дробь" - Button10

"В основное окно" - Button11

Элементы группы "Число1. Десятичная дробь":

Edit4

"В правильную дробь" - Button4

"В десятичную дробь" - Button5

"В основное окно" - Button6

"Из основного окна" - Button7

"Сброс" - Button9

Элементы группы "Число2. Десятичная дробь":

Edit8

"В правильную дробь" - Button12

"В десятичную дробь" - Button13

"В основное окно" - Button14

"Из основного окна" - Button15

"Сброс" - Button16

"+" - Button17

"-" - Button19

"*" - Button20

"/" - Button21

Для вызова этого окна из пункта меню "Дополнительно -> Работа с дробями" создадим обработчик вызова формы:

void __fastcall TForm1::N6Click(TObject *Sender)

{->Visible=true;

}


Шаг 8.

Назначим кнопкам формы действия, соответствующие необходимым функциям. Общий принцип работы с дробными числами состоит в нахождении наибольшего общего делителя числителя и знаменателя, и последующего деления их на НОД. Таким образом мы приводим систему к неприводимому состоянию. Перевод десятичных дробей осуществляется путем взятия дробной части, нахождения НОД ее и множителя 10n, где n - число знаков в дробной части, и последующего деления на НОД. Также в редакторе реализованы простые арифметические операции над дробями, перевод числа из основного окна, а также результатов в основное окно.

С детальной реализацией алгоритма можно ознакомиться в листинге программы.

Рис. 13 Пример работы обработчика дробных чисел


5. Код программы

Листинг 1. Код основного модуля Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "XPManifest"

#pragma resource "*.dfm"*Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------int ConvOp;_t Result;__fastcall TForm1::Btn1Click(TObject *Sender)

{Data;

(OState==1)

{Edit4->Text="1";=0;

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='1';->Text=Data;

}

{if(Edit4->Text=="0")->Text="1";->Text=Edit4->Text+"1";

}

}

();();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnEEClick(TObject *Sender)

{(EEState==1)=0;

{EEState=1;->Text=Edit4->Text+"e+00";

}

}

//---------------------------------------------------------------------------__fastcall TForm1::N8Click(TObject *Sender)

{->Visible=true;

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn2ndClick(TObject *Sender)

{(SecondState==0)=1;SecondState=0;();(SecondState==0)

{BtnDRG->Caption="DRG";>Caption="LOG";>Caption="LN";>Caption="<---";>Caption="HYP";>Caption="SIN";>Caption="COS";>Caption="TAN";>Caption="C";>Caption="Pi";toX->Caption="1/x";->Caption="x^2";->Caption="x^3";>Caption="x^y";>Caption="DEC";>Caption="EE";>Caption="(";>Caption=")";>Caption="/";>Caption="BIN";->Caption="7";->Caption="8";->Caption="9";>Caption="*";>Caption="HEX";->Caption="4";->Caption="5";->Caption="6";>Caption="-";>Caption="OCT";->Caption="1";->Caption="2";->Caption="3";>Caption="+";->Caption="0";>Caption=".";>Caption="±";>Caption="=";

}

{BtnDRG->Caption="DRG>";>Caption="10^x";>Caption="e^x";>Caption="";>Caption="";>Caption="SIN^-1";>Caption="COS^-1";>Caption="TAN^-1";>Caption="CE";>Caption="";toX->Caption="";->Caption="sqr(x)";->Caption="qr(x)";>Caption="x ro y";>Caption="FLO";>Caption="";>Caption="";>Caption="";>Caption="p>r";>Caption="SCI";->Caption="7";->Caption="8";->Caption="9";>Caption="r>p";>Caption="ENG";->Caption="4";->Caption="5";->Caption="6";>Caption="";>Caption="%";->Caption="1";->Caption="2";->Caption="3";>Caption="";->Caption="0";>Caption=".";>Caption="±";>Caption="=";

}

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnDRGClick(TObject *Sender)

{(DRGState!=2)++;DRGState=0;();

}

//---------------------------------------------------------------------------__fastcall TForm1::FormCreate(TObject *Sender)

{();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnDECClick(TObject *Sender)

{->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;_A->Enabled=0;_B->Enabled=0;_C->Enabled=0;_D->Enabled=0;_E->Enabled=0;_F->Enabled=0;>Enabled=1;>Enabled=1;->Text=SSConvToDec(Edit4->Text, SSState);=0;();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnBINClick(TObject *Sender)

{->Enabled=1;->Enabled=1;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;_A->Enabled=0;_B->Enabled=0;_C->Enabled=0;_D->Enabled=0;_E->Enabled=0;_F->Enabled=0;>Enabled=0;>Enabled=0;->Text=SSConvToNeeded(Edit4->Text, SSState,1);=1;();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnHEXClick(TObject *Sender)

{->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;_A->Enabled=1;_B->Enabled=1;_C->Enabled=1;_D->Enabled=1;_E->Enabled=1;_F->Enabled=1;>Enabled=0;>Enabled=0;->Text=SSConvToNeeded(Edit4->Text, SSState,2);=2;();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn210Click(TObject *Sender)

{=4;();->Enabled=1;->Enabled=1;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;->Enabled=0;_A->Enabled=0;_B->Enabled=0;_C->Enabled=0;_D->Enabled=0;_E->Enabled=0;_F->Enabled=0;>Enabled=0;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnOCTClick(TObject *Sender)

{->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=0;->Enabled=0;_A->Enabled=0;_B->Enabled=0;_C->Enabled=0;_D->Enabled=0;_E->Enabled=0;_F->Enabled=0;>Enabled=0;>Enabled=0;->Text=SSConvToNeeded(Edit4->Text, SSState,3);=3;();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn2Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="2";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=50;->Text=Data;

}

{if(Edit4->Text=="0")->Text="2";->Text=Edit4->Text+"2";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn3Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="3";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=51;->Text=Data;

}

{if(Edit4->Text=="0")->Text="3";->Text=Edit4->Text+"3";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn4Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="4";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=52;->Text=Data;

}

{if(Edit4->Text=="0")->Text="4";->Text=Edit4->Text+"4";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn5Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="5";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=53;->Text=Data;

}

{if(Edit4->Text=="0")->Text="5";->Text=Edit4->Text+"5";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn6Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="6";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=54;->Text=Data;

}

{if(Edit4->Text=="0")->Text="6";->Text=Edit4->Text+"6";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn7Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="7";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=55;->Text=Data;

}

{if(Edit4->Text=="0")->Text="7";->Text=Edit4->Text+"7";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn8Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="8";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=56;->Text=Data;

}

{if(Edit4->Text=="0")->Text="8";->Text=Edit4->Text+"8";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn9Click(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="9";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]=57;->Text=Data;

}

{if(Edit4->Text=="0")->Text="9";->Text=Edit4->Text+"9";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnPMClick(TObject *Sender)

{a;=StrToFloat(Edit4->Text);=0-a;->Text=FloatToStr(a);

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnCClick(TObject *Sender)

{->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;->Enabled=1;_A->Enabled=0;_B->Enabled=0;_C->Enabled=0;_D->Enabled=0;_E->Enabled=0;_F->Enabled=0;>Enabled=1;>Enabled=1;->Text="0";();=0;=0;=0;=0;();

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnDotClick(TObject *Sender)

{(DotState==0)->Text=Edit4->Text+",";;

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn0Click(TObject *Sender)

{(Edit4->Text!="0"||SSState==4)->Text=Edit4->Text+"0";

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnPlusClick(TObject *Sender)

{=1;=OpBuffer1;=StrToFloat(Edit4->Text);=1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnRavnoClick(TObject *Sender)

{a;(OpCod)

{0:

{=StrToFloat(Edit4->Text);->Text=a;=-1;=0;

};1:

{=OpBuffer1;=StrToFloat(Edit4->Text);=OpBuffer1+OpBuffer2;->Text=FloatToStr(OpBuffer1);=-1;=0;

};2:

{=OpBuffer1;=StrToFloat(Edit4->Text);=OpBuffer2-OpBuffer1;->Text=FloatToStr(OpBuffer1);=-1;=0;

};3:

{=OpBuffer1;=StrToFloat(Edit4->Text);=OpBuffer2*OpBuffer1;->Text=FloatToStr(OpBuffer1);=-1;=0;

};4:

{=OpBuffer1;=StrToFloat(Edit4->Text);=OpBuffer2/OpBuffer1;->Text=FloatToStr(OpBuffer1);=-1;=0;

};5:

{=OpBuffer1;=StrToFloat(Edit4->Text);=pow(OpBuffer2,OpBuffer1);->Text=FloatToStr(OpBuffer1);=-1;=0;

};

}=0;

}

//---------------------------------------------------------------------------

__fastcall TForm1::BtnMinusClick(TObject *Sender)

{=1;=OpBuffer1;=StrToFloat(Edit4->Text);=2;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnUmnojClick(TObject *Sender)

{=1;=OpBuffer1;=StrToFloat(Edit4->Text);=3;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnDelClick(TObject *Sender)

{=1;=OpBuffer1;=StrToFloat(Edit4->Text);=4;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnSINClick(TObject *Sender)

{(SecondState==0)

{switch(DRGState)

{0:

{=StrToFloat(Edit4->Text);=sin(Pi*OpBuffer1/180);->Text=FloatToStr(OpBuffer1);

};1:

{=StrToFloat(Edit4->Text);=sin(OpBuffer1);->Text=FloatToStr(OpBuffer1);

};2:

{=StrToFloat(Edit4->Text);=sin(Pi*OpBuffer1/200);->Text=FloatToStr(OpBuffer1);

};

}

}(DRGState)

{0:

{=StrToFloat(Edit4->Text);=180*asin(OpBuffer1)/Pi;->Text=FloatToStr(OpBuffer1);

};1:

{=StrToFloat(Edit4->Text);=asin(OpBuffer1);->Text=FloatToStr(OpBuffer1);

};2:

{=StrToFloat(Edit4->Text);=200*asin(OpBuffer1)/Pi;->Text=FloatToStr(OpBuffer1);

};

}();();=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnCOSClick(TObject *Sender)

{(SecondState==0)

{switch(DRGState)

{0:

{=StrToFloat(Edit4->Text);=cos(Pi*OpBuffer1/180);->Text=OpBuffer1;

};1:

{=StrToFloat(Edit4->Text);=cos(OpBuffer1);->Text=OpBuffer1;

};2:

{=StrToFloat(Edit4->Text);=cos(Pi*OpBuffer1/200);->Text=OpBuffer1;

};

}

}(DRGState)

{0:

{=StrToFloat(Edit4->Text);=180*acos(OpBuffer1)/Pi;->Text=OpBuffer1;

};1:

{=StrToFloat(Edit4->Text);=acos(OpBuffer1);->Text=OpBuffer1;

};2:

{=StrToFloat(Edit4->Text);=200*acos(OpBuffer1)/Pi;->Text=OpBuffer1;

};

}();();=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnTANClick(TObject *Sender)

{(SecondState==0)

{switch(DRGState)

{0:

{=StrToFloat(Edit4->Text);=tan(Pi*OpBuffer1/180);->Text=OpBuffer1;

};1:

{=StrToFloat(Edit4->Text);=tan(OpBuffer1);->Text=OpBuffer1;

};2:

{=StrToFloat(Edit4->Text);=tan(Pi*OpBuffer1/200);->Text=OpBuffer1;

};

}

}(DRGState)

{0:

{=StrToFloat(Edit4->Text);=180*atan(OpBuffer1)/Pi;->Text=OpBuffer1;

};1:

{=StrToFloat(Edit4->Text);=atan(OpBuffer1);->Text=OpBuffer1;

};2:

{=StrToFloat(Edit4->Text);=200*atan(OpBuffer1)/Pi;->Text=OpBuffer1;

};

}();();=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn1toXClick(TObject *Sender)

{(SecondState==0&&Edit4->Text!="0")

{=StrToFloat(Edit4->Text);=1/OpBuffer1;->Text=OpBuffer1;

}

else

{

//Операции, которые, быть может, будут назначены

//этой кнопке в качестве второй функции:)

}();();=-1;

}

//---------------------------------------------------------------------------

__fastcall TForm1::BtnX2Click(TObject *Sender)

{(SecondState==0)

{=StrToFloat(Edit4->Text);=pow(OpBuffer1,2);->Text=OpBuffer1;

}

{=StrToFloat(Edit4->Text);=pow(OpBuffer1,0.5);->Text=OpBuffer1;

}();();=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnX3Click(TObject *Sender)

{a=1,b=3;=a/b;(SecondState==0)

{=StrToFloat(Edit4->Text);=pow(OpBuffer1,3);->Text=OpBuffer1;

}

{=StrToFloat(Edit4->Text);=pow(OpBuffer1,a);->Text=OpBuffer1;

}();();=-1;

}__fastcall TForm1::BtnYinXClick(TObject *Sender)

{=1;=OpBuffer1;=StrToFloat(Edit4->Text);=5;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnPiClick(TObject *Sender)

{->Text=Pi;=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnNazadClick(TObject *Sender)

{(Edit4->Text.Length()==1)->Text=0;->Text=Edit4->Text.Delete(Edit4->Text.Length(),1);

}

//---------------------------------------------------------------------------__fastcall TForm1::ButtonM1Click(TObject *Sender)

{->Text=Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::ButtonMR1Click(TObject *Sender)

{->Text=EditM1->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button1Click(TObject *Sender)

{->Text=Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button2Click(TObject *Sender)

{->Text=EditM2->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button3Click(TObject *Sender)

{->Text=Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button4Click(TObject *Sender)

{->Text=EditM3->Text;

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_AClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="A";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='A';->Text=Data;

}

{if(Edit4->Text=="0")->Text="A";->Text=Edit4->Text+"A";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_BClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="B";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='B';->Text=Data;

}

{if(Edit4->Text=="0")->Text="B";->Text=Edit4->Text+"B";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_CClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="C";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='C';->Text=Data;

}

{if(Edit4->Text=="0")->Text="C";->Text=Edit4->Text+"C";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_DClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="D";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='D';->Text=Data;

}

{if(Edit4->Text=="0")->Text="D";->Text=Edit4->Text+"D";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_EClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="E";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='E';->Text=Data;

}

{if(Edit4->Text=="0")->Text="E";->Text=Edit4->Text+"E";

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::Btn_FClick(TObject *Sender)

{Data;(OState==1)

{Edit4->Text="F";=0;

}

{(EEState==1)

{=Edit4->Text;[Data.Length()-1]=Data[Data.Length()];[Data.Length()]='F';->Text=Data;

}

}

}();();

}

//---------------------------------------------------------------------------__fastcall TForm1::N6Click(TObject *Sender)

{->Visible=true;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnHYPClick(TObject *Sender)

{=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnLOGClick(TObject *Sender)

{=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::BtnLNClick(TObject *Sender)

{=-1;

}

//---------------------------------------------------------------------------__fastcall TForm1::N4Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

Листинг 2. Код header-файла основного модуля программы Unit1.h

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

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Menus.hpp>

#include <ExtCtrls.hpp>

#include <Buttons.hpp>

#include "XPManifest.h"

#include <string>

#include <math>

//---------------------------------------------------------------------------SecondState=0,=0,=0,=0,=0;DRGState=0,=0,=0;=0,=0,=3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362

;SSOpBuf;TForm1 : public TForm

{

__published: // IDE-managed Components*MainMenu1;*N1;*N2;*N3;*N6;*Panel1;*Btn2nd;*BtnDRG;*BtnLOG;*BtnLN;*BtnHYP;*BtnSIN;*BtnCOS;*BtnTAN;*BtnYinX;*BtnPi;*Btn1toX;*BtnX2;*BtnX3;*BtnDel;*BtnC;*BtnEE;*BtnLS;*BtnPS;*BtnNazad;*Btn7;*Btn8;*Btn9;*Btn4;*Btn5;*Btn6;*Btn1;*Btn2;*Btn3;*Btn0;*BtnDot;*BtnPM;*BtnRavno;*BtnPlus;*BtnMinus;*BtnUmnoj;*EditM1;*Label1;*EditM2;*Label2;*EditM3;*Label3;*Edit4;*N8;*BtnOCT;*BtnDEC;*BtnBIN;*BtnHEX;*Panel2;*L2nd;*LDEG;*LRAD;*LGRAD;*LOCT;*LHEX;*LBIN;*LDEC;*ButtonM1;*ButtonMR1;*Btn_A;*Btn_B;*Btn_C;*Btn_D;*Btn_E;*Btn_F;*XPManifest1;*N4;__fastcall Btn1Click(TObject *Sender);__fastcall BtnEEClick(TObject *Sender);__fastcall N8Click(TObject *Sender);__fastcall Btn2ndClick(TObject *Sender);__fastcall BtnDRGClick(TObject *Sender);__fastcall FormCreate(TObject *Sender);__fastcall BtnDECClick(TObject *Sender);__fastcall BtnBINClick(TObject *Sender);__fastcall BtnHEXClick(TObject *Sender);__fastcall Btn210Click(TObject *Sender);__fastcall BtnOCTClick(TObject *Sender);__fastcall Btn2Click(TObject *Sender);__fastcall Btn3Click(TObject *Sender);__fastcall Btn4Click(TObject *Sender);__fastcall Btn5Click(TObject *Sender);__fastcall Btn6Click(TObject *Sender);__fastcall Btn7Click(TObject *Sender);__fastcall Btn8Click(TObject *Sender);__fastcall Btn9Click(TObject *Sender);__fastcall BtnPMClick(TObject *Sender);__fastcall BtnCClick(TObject *Sender);__fastcall BtnDotClick(TObject *Sender);__fastcall Btn0Click(TObject *Sender);__fastcall BtnPlusClick(TObject *Sender);__fastcall BtnRavnoClick(TObject *Sender);__fastcall BtnMinusClick(TObject *Sender);__fastcall BtnUmnojClick(TObject *Sender);__fastcall BtnDelClick(TObject *Sender);__fastcall BtnSINClick(TObject *Sender);__fastcall BtnCOSClick(TObject *Sender);__fastcall BtnTANClick(TObject *Sender);__fastcall Btn1toXClick(TObject *Sender);__fastcall BtnX2Click(TObject *Sender);__fastcall BtnX3Click(TObject *Sender);__fastcall BtnYinXClick(TObject *Sender);__fastcall BtnPiClick(TObject *Sender);__fastcall BtnNazadClick(TObject *Sender);__fastcall ButtonM1Click(TObject *Sender);__fastcall ButtonMR1Click(TObject *Sender);__fastcall Button1Click(TObject *Sender);__fastcall Button2Click(TObject *Sender);__fastcall Button3Click(TObject *Sender);__fastcall Button4Click(TObject *Sender);__fastcall Btn_AClick(TObject *Sender);__fastcall Btn_BClick(TObject *Sender);__fastcall Btn_CClick(TObject *Sender);__fastcall Btn_DClick(TObject *Sender);__fastcall Btn_EClick(TObject *Sender);__fastcall Btn_FClick(TObject *Sender);__fastcall N6Click(TObject *Sender);__fastcall BtnHYPClick(TObject *Sender);__fastcall BtnLOGClick(TObject *Sender);__fastcall BtnLNClick(TObject *Sender);__fastcall N4Click(TObject *Sender);: // User declarations: // User declarations

__fastcall TForm1(TComponent* Owner);

//---------------------------------------------------------------------------

// Функция анализа состояний кнопки переключений вторичных функций.

// состояния переключателя Degree/Radian/Grad, а также состояния

// текущей системы счисленияStateAnalis()

{(SecondState==1)nd->Font->Color=clBlack;L2nd->Font->Color=clSilver;(DRGState)

{0:

{LDEG->Font->Color=clBlack;>Font->Color=clSilver;>Font->Color=clSilver;

};1:

{LRAD->Font->Color=clBlack;>Font->Color=clSilver;>Font->Color=clSilver;

};2:

{LDEG->Font->Color=clSilver;>Font->Color=clSilver;>Font->Color=clBlack;

};

}(SSState)

{0:

{LDEC->Font->Color=clBlack;>Font->Color=clSilver;>Font->Color=clSilver;>Font->Color=clSilver;

};1:

{LDEC->Font->Color=clSilver;>Font->Color=clBlack;>Font->Color=clSilver;>Font->Color=clSilver;

};2:

{LDEC->Font->Color=clSilver;>Font->Color=clSilver;>Font->Color=clBlack;>Font->Color=clSilver;

};3:

{LDEC->Font->Color=clSilver;>Font->Color=clSilver;>Font->Color=clSilver;>Font->Color=clBlack;

};

}

};

//---------------------------------------------------------------------------

// Функция сброса приложения в начальное состояние

void SecondFClear()

{SecondState=0;>Caption="DRG";>Caption="LOG";>Caption="LN";>Caption="<---";>Caption="HYP";>Caption="SIN";>Caption="COS";>Caption="TAN";>Caption="C";>Caption="Pi";toX->Caption="1/x";->Caption="x^2";->Caption="x^3";>Caption="x^y";>Caption="DEC";>Caption="EE";>Caption="(";>Caption=")";>Caption="/";>Caption="BIN";->Caption="7";->Caption="8";->Caption="9";>Caption="*";>Caption="HEX";->Caption="4";->Caption="5";->Caption="6";>Caption="-";>Caption="OCT";->Caption="1";->Caption="2";->Caption="3";>Caption="+";->Caption="0";>Caption=".";>Caption="±";>Caption="=";

}

};

//---------------------------------------------------------------------------SSConvToDec(AnsiString StrToConv, int STC)

{

// Функция конвертирования из исходной системы счисления в десятичную

// для использования в последующих расчетахOpBuf=StrToConv, Buf;

int Data=0,=0,=0,=0,=0;c;(STC)

{0: //Перевод из десятичной системы не требуется;1: //Перевод из двоичной системы счисления

{=StrToConv.Length();=StrToInt(StrToConv);=a;(i=n,k=0;i!=0;i--,k++)

{=StrToInt(OpBuf[i]);=Data+(a*pow(2,k));

}=Data;

};2: //Перевод из 16-ричной системы счисления

{=StrToConv.Length();(i=n,k=0;i!=0;i--,k++)

{=OpBuf[i];(c)

{'0':=Data+(0*pow(16,k));;'1':=Data+(1*pow(16,k));;'2':=Data+(2*pow(16,k));;'3':=Data+(3*pow(16,k));;'4':=Data+(4*pow(16,k));;'5':=Data+(5*pow(16,k));;'6':=Data+(6*pow(16,k));;'7':=Data+(7*pow(16,k));;'8':=Data+(8*pow(16,k));;'9':=Data+(9*pow(16,k));;'A':=Data+(10*pow(16,k));;'B':=Data+(11*pow(16,k));;'C':=Data+(12*pow(16,k));;'D':=Data+(13*pow(16,k));;'E':=Data+(14*pow(16,k));;'F':=Data+(15*pow(16,k));;

}

}=Data;

};3: //Перевод из 8-ричной системы счисления

{=StrToConv.Length();(i=n,k=0;i!=0;i--,k++)

{=StrToInt(OpBuf[i]);=Data+(a*pow(8,k));

}=Data;

};

}StrToConv;

}

//---------------------------------------------------------------------------SSConvToNeeded(AnsiString StrToConv, int STC, int STCT)

{

// STC - система счисления, из которой производим конвертацию

// STCT система счисления, в которую конвертируем

//

// Для начала конвертируем из исходной системы счисления в десятичную

AnsiString OpBuf="",="",="";a;int Isx=0,=0,=0,=0,=0;=StrToFloat(SSConvToDec(StrToConv,STC));

Isx=a;(STCT)

{0: //Перевод в десятичную систему;1: //Перевод в двоичную систему

{(Isx!=0)

{=(Isx%2);=Isx/2;=StringBuf+IntToStr(IntBuf);

}=StringBuf.Length();(i=n;i>0;i--)=RevBuf+StringBuf[i];=RevBuf;

};2: //Перевод в шестнадцатеричную систему

{(Isx!=0)

{=(Isx%16);=Isx/16;(IntBuf)

{0:=StringBuf+'0';;1:=StringBuf+'1';;2:=StringBuf+'2';;3:=StringBuf+'3';;4:=StringBuf+'4';;5:=StringBuf+'5';;6:=StringBuf+'6';;7:=StringBuf+'7';;8:=StringBuf+'8';;9:=StringBuf+'9';;10:=StringBuf+'A';;11:=StringBuf+'B';;12:=StringBuf+'C';;13:=StringBuf+'D';;14:=StringBuf+'E';;15:=StringBuf+'F';;

}

}=StringBuf.Length();(i=n;i>0;i--)=RevBuf+StringBuf[i];=RevBuf;

};3:

{(Isx!=0)

{=(Isx%8);=Isx/8;=StringBuf+IntToStr(IntBuf);

}=StringBuf.Length();(i=n;i>0;i--)=RevBuf+StringBuf[i];=RevBuf;

};

}(StringBuf=="")=0;(StringBuf);

}

//---------------------------------------------------------------------------PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Листинг 3. Код модуля обработки обычных/десятичных дробей Unit3.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcall TForm3::Button7Click(TObject *Sender)

{->Text=Form1->Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button1Click(TObject *Sender)

{int D1=0,D2=0,D3=0,Nod=1;=StrToInt(Edit1->Text);=StrToInt(Edit2->Text);=StrToInt(Edit3->Text);=D1*D3+D2;=0;=FindNOD(D2,D3);=D2/Nod;=D3/Nod;(DState==0)

{(D2>D3)

{=D2/D3;=D2%D3;

}->Text=D1;->Text=D2;->Text=D3;

}

{->Text=D1;->Text=D2;->Text=D3;

}(DState==0)=1;=0;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button2Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button5Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button4Click(TObject *Sender)

{Data,Drob;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit4->Text);=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button8Click(TObject *Sender)

{->Text="0";->Text="0";->Text="0";->Text="0";

}

//---------------------------------------------------------------------------__fastcall TForm3::Button3Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Edit4->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button6Click(TObject *Sender)

{->Edit4->Text=Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button9Click(TObject *Sender)

{int D1=0,D2=0,D3=0,Nod=1;=StrToInt(Edit5->Text);=StrToInt(Edit6->Text);=StrToInt(Edit7->Text);=D1*D3+D2;=0;=FindNOD(D2,D3);=D2/Nod;=D3/Nod;(DState==0)

{(D2>D3)

{=D2/D3;=D2%D3;

}->Text=D1;->Text=D2;->Text=D3;

}

{->Text=D1;->Text=D2;->Text=D3;

}(DState==0)=1;=0;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button10Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button11Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Edit4->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button16Click(TObject *Sender)

{->Text="0";->Text="0";->Text="0";->Text="0";

}

//---------------------------------------------------------------------------__fastcall TForm3::Button15Click(TObject *Sender)

{->Text=Form1->Edit4->Text;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button14Click(TObject *Sender)

{->Edit4->Text=Edit8->Text;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button13Click(TObject *Sender)

{a,D1,D2,D3;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=a;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button12Click(TObject *Sender)

{Data,Drob;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit8->Text);=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button17Click(TObject *Sender)

{Data,Drob;a,b,D1,D2,D3;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=b;=a+b;=a;=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button18Click(TObject *Sender)

{Data,Drob;a,b,D1,D2,D3;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=b;=a-b;=a;=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button19Click(TObject *Sender)

{Data,Drob;a,b,D1,D2,D3;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=b;=a*b;=a;=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------__fastcall TForm3::Button20Click(TObject *Sender)

{Data,Drob;a,b,D1,D2,D3;int Cel,Mnoj,Nod,Fract;Buf;=StrToFloat(Edit1->Text);=StrToFloat(Edit2->Text);=StrToFloat(Edit3->Text);=D1+D2/D3;->Text=a;=StrToFloat(Edit5->Text);=StrToFloat(Edit6->Text);=StrToFloat(Edit7->Text);=D1+D2/D3;->Text=b;=a/b;=a;=Data;=Data-Cel;=FloatToStr(Drob);=pow(10,Buf.Length()-2);=Drob*Mnoj;=Drob;=FindNOD(Fract,Mnoj);->Text=Cel;->Text=Fract/Nod;->Text=Mnoj/Nod;

}

//---------------------------------------------------------------------------

Похожие работы на - Разработка программы создания и уничтожения объектов в среде C++Builder

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!