Свойства
|
Описание
|
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;
}
//---------------------------------------------------------------------------