Читайте также:
|
|
Для програми «інженерний калькулятор» вхідними даними є числові дані, тому в якості прикладу та аналізу результатів, я використав набір різних чисел до яких застосував різні функції.
Послідовність виконання:
1. 23+24+12-33= 26
2. 44*55*77= 186340
3. 33 ‘+/-‘ – 22= -55
4. 44443 ‘beakspace’= 4444
5. 25 mod 2= 1
6. 25 div 2= 12
7. 64 ‘sqrt’= 8
8. 4 ‘x^y’ 2= 16
9. 5 ‘n!’ = 120
10. 30 ‘sin(x)’ = 0,5
Всі обчислення виконанні на калькуляторі, результати мають вигляд:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
При зміні вхідних даних результат правильний. Ніяких збоїв програми не відмічено.
Висновки
Після виконання своєї курсової роботи я набув практичних навичок роботи в середовищі об’єктно-орієнтованого програмування. Навчився програмувати в середовищі Builder C++ та працювати з об’єктами, створювати форму, програмувати кнопки, працювати з рядком редагування Edit, здійснювати доступ до елементів рядка Edit, виконувати операції над ними, також навчився оголошувати класи, працювати з елементами класу, закріпив навички роботи з циклами та створення функцій.
Отримана програма є якісною, швидкою при виконанні і не потребує значних ресурсів комп’ютера для її запуску.
Дана програма може згодитися для дуже багатьох користувачів, підприємств, навчальних установ. Вона є універсальною, оскільки калькулятор є невід’ємним атрибутом будь-якої комп’ютерної системи. Тому актуальність даної програми є надзвичайно великою.
Додаток 1. Текст програми на мові Сі++
//---------------------------------------------------------------------------
#include <math.h>
#include <vcl.h>
Pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Class cCalc
{
public:
long double a,b,last,memory;
bool a1,b1,end,flag,point, mem;
char d;
cCalc()
{
a1=b1=point=end=flag=memory=false;
}
long double Action(long double c)
{
if (a1==false && b1==false)
{
a1=true;
a=c;
return a;
}
else if (a1 && b1==false)
{
switch (d)
{
case '+': {
b=c;
a=a+b;
last=b;
b=0;
return a;
}
case '-': {
b=c;
a=a-b;
last=b;
b=0;
return a;
}
case '*': {
b=c;
a=a*b;
last=b;
b=0;
return a;
}
case '/': {
b=c;
if (b!=0)
{
a=a/b;
last=b;
b=0;
return a;
}
else d='e';
}
case '%': {
b=c;
if (b!=0)
{
b=c;
a=(int)a % (int)b;
last=b;
b=0;
return a;
}
else d='e';
}
case 'd': {
b=c;
if (b!=0)
{
b=c;
a=(int)a / (int)b;
last=b;
b=0;
return a;
}
else d='e';
}
case '^': {
b=c;
a=pow(a,b);
last=a;
b=0;
return a;
}
}
}
else if (a1 && b1)
{
switch (d)
{
case '+': return a=a+last;
case '-': return a=a-last;
case '*': return a=a*last;
case '/': {
if (last!=0)
{
a=a / last;
return a;
}
else d='e';
}
case '%': {
if (last!=0)
{
a=(int)a % (int)last;
return a;
}
else d='e';
}
case 'd': {
if (last!=0)
{
a=(int)a / (int)last;
return a;
}
else d='e';
}
case '^': return a*=last;
};
}
}
};
void Calculate(TEdit *Edit1, cCalc *Tc, char cd)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (!Tc->end)
{
if (Tc->d==cd || Tc->d=='\0')
{
Tc->d=cd;
if (Tc->a1 &&!Tc->b1 &&!Tc->flag)
{
Edit1->Text=FloatToStr(Tc->Action(StrToFloat(Edit1->Text)));
Tc->flag=true;
}
else if (!Tc->a1 &&!Tc->b1)
{
Edit1->Text=FloatToStr(Tc->Action(StrToFloat(Edit1->Text)));
Tc->flag=true;
}
}
Else
{
if (!Tc->flag)
{
Edit1->Text=FloatToStr(Tc->Action(StrToFloat(Edit1->Text)));
Tc->a1=Tc->flag=true;
Tc->b1=false;
Tc->a=StrToFloat(Edit1->Text);
}
Tc->d=cd;
}
}
else if (!Tc->flag)
{
Tc->d=cd;
Tc->b1=Tc->end=false;
Tc->a1=Tc->flag=true;
Tc->a=StrToFloat(Edit1->Text);
}
}
}
void Numbers(TEdit *Edit1, cCalc *Tc, char num)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (Tc->flag || (Tc->point==false && Edit1->Text=="0,"))
{
Edit1->Clear();
Tc->flag=false;
Tc->point=false;
}
Edit1->Text=Edit1->Text+num;
}
}
TForm1 *Form1;
cCalc *Tc= new cCalc;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//============================================================
//======================' + '====================================
void __fastcall TForm1::Button13Click(TObject *Sender)
{
Calculate(Edit1, Tc,'+');
}
//======================' - '====================================
void __fastcall TForm1::Button14Click(TObject *Sender)
{
Calculate(Edit1, Tc,'-');
}
//======================' * '====================================
void __fastcall TForm1::Button15Click(TObject *Sender)
{
Calculate(Edit1, Tc,'*');
}
//======================' / '====================================
void __fastcall TForm1::Button16Click(TObject *Sender)
{
Calculate(Edit1, Tc,'/');
}
//======================' Mod '==================================
void __fastcall TForm1::Button25Click(TObject *Sender)
{
Calculate(Edit1, Tc,'%');
}
//======================' Div '==================================
void __fastcall TForm1::Button26Click(TObject *Sender)
{
Calculate(Edit1, Tc,'d');
}
//======================' x^y '==================================
void __fastcall TForm1::Button29Click(TObject *Sender)
{
Calculate(Edit1, Tc,'^');
}
//===============================================================
//==========================================================
//========================' 1 '==================================
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Numbers(Edit1, Tc, '1');
}
//========================' 2 '==================================
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Numbers(Edit1, Tc, '2');
}
//========================' 3 '==================================
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Numbers(Edit1, Tc, '3');
}
//========================' 4 '==================================
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Numbers(Edit1, Tc, '4');
}
//========================' 5 '==================================
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Numbers(Edit1, Tc, '5');
}
//========================' 6 '==================================
void __fastcall TForm1::Button7Click(TObject *Sender)
{
Numbers(Edit1, Tc, '6');
}
//========================' 7 '==================================
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Numbers(Edit1, Tc, '7');
}
//========================' 8 '==================================
void __fastcall TForm1::Button9Click(TObject *Sender)
{
Numbers(Edit1, Tc, '8');
}
//========================' 9 '==================================
void __fastcall TForm1::Button10Click(TObject *Sender)
{
Numbers(Edit1, Tc, '9');
}
//========================' 0 '==================================
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Tc->point) Numbers(Edit1, Tc, '0');
else if (StrToFloat(Edit1->Text)>0) Numbers(Edit1, Tc, '0');
}
//===============================================================
//========================BeakSpace==============================
void __fastcall TForm1::Button18Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (Edit1->Text.Length()==1 ||
(Edit1->Text.Length()==2 && Edit1->Text.operator [](1)=='-'))
{
Edit1->Text="0,";
Tc->point=false;
}
Else
if (Edit1->Text.Length()==4 && Edit1->Text.operator [](1)=='-' &&
Edit1->Text.operator [](2)=='0' && Edit1->Text.operator [](3)==',')
{
Edit1->Text="0,";
Tc->point=false;
}
Else
if (Edit1->Text.operator [](Edit1->Text.Length())==',' &&
Edit1->Text!="0,")
{
Tc->point=false;
Edit1->Text=Edit1->Text.Delete(Edit1->Text.Length(),1);
}
Else
if (Edit1->Text!="0,") Edit1->Text=Edit1->Text.Delete(Edit1->Text.Length(),1);
}
}
//===============================================================
//========================' +/- '================================
void __fastcall TForm1::Button11Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (Edit1->Text.operator [](1)=='-')
Edit1->Text=Edit1->Text.Delete(1,1);
else if (Edit1->Text!="0,") Edit1->Text=Edit1->Text.Insert("-",1);
}
}
//===============================================================
//========================', '==================================
void __fastcall TForm1::Button12Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (Edit1->Text!="0," && Tc->point==false)
Edit1->Text=Edit1->Text+',';
Tc->point=true;
}
}
//===============================================================
//========================' = '==================================
void __fastcall TForm1::Button17Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (Tc->a1)
{
Edit1->Text=FloatToStr(Tc->Action(StrToFloat(Edit1->Text)));
if (Tc->d=='e') Edit1->Text="Error!";
if (!Tc->b1) Tc->b1=true;
Tc->end=true;
}
}
}
//===============================================================
//========================================
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Tc->point=false;
}
//===============================================================
//================'корінь квадратний '==========================
void __fastcall TForm1::Button27Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (StrToFloat(Edit1->Text)>=0)
{
Edit1->Text=FloatToStr(pow(StrToFloat(Edit1->Text),0.5));
Tc->flag=true;
Tc->a1=false;
Tc->b1=false;
Tc->d='\0';
}
Else
{
Edit1->Text="Error!";
Tc->d='e';
}
}
}
//===============================================================
//====================='квадрат'===============================
void __fastcall TForm1::Button28Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
Edit1->Text=FloatToStr(pow(StrToFloat(Edit1->Text),2));
Tc->flag=true;
Tc->a1=false;
Tc->b1=false;
Tc->d='\0';
}
}
//===============================================================
//===================='факторіал'==============================
void __fastcall TForm1::Button30Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (StrToFloat(Edit1->Text)>=0)
{
long double fact;
fact=1.0;
for (int i=1; i<(int)StrToFloat(Edit1->Text)+1; i++)
fact*=i;
Edit1->Text=FloatToStr(fact);
Tc->flag=true;
Tc->a1=false;
Tc->b1=false;
Tc->d='\0';
}
Else
{
Edit1->Text="Error!";
Tc->d='e';
}
}
}
//===============================================================
//======================' Ln(x) '================================
void __fastcall TForm1::Button31Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (StrToFloat(Edit1->Text)>0)
{
Edit1->Text=log(StrToFloat(Edit1->Text));
Tc->flag=true;
Tc->a1=false;
Tc->b1=false;
Tc->d='\0';
}
Else
{
Edit1->Text="Error!";
Tc->d='e';
}
}
}
//===============================================================
//======================' Lg(x) '================================
void __fastcall TForm1::Button32Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (StrToFloat(Edit1->Text)>0)
{
Edit1->Text=FloatToStr(log10(StrToFloat(Edit1->Text)));
Tc->flag=true;
Tc->a1=false;
Tc->b1=false;
Tc->d='\0';
}
Else
{
Edit1->Text="Error!";
Tc->d='e';
}
}
}
//===============================================================
//======================' Sin(x) '===============================
void __fastcall TForm1::Button33Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
float p;
if (RadioButton1->Checked) p=StrToFloat(Edit1->Text)*M_PI/180;
else p=StrToFloat(Edit1->Text);
Edit1->Text=FloatToStr(sin(p));
}
}
//======================' Cos(x) '===============================
void __fastcall TForm1::Button34Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
float p;
if (RadioButton1->Checked) p=StrToFloat(Edit1->Text)*M_PI/180;
else p=StrToFloat(Edit1->Text);
Edit1->Text=FloatToStr(cos(p));
}
}
//===============================================================
//===================' ArcSin(x) '===============================
void __fastcall TForm1::Button35Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (abs(StrToFloat(Edit1->Text))>1) Tc->d='e';
Else
if (RadioButton1->Checked)
Edit1->Text=asin(StrToFloat(Edit1->Text))/M_PI*180;
Else
Edit1->Text=asin(StrToFloat(Edit1->Text));
}
}
//===============================================================
//===================' ArcCos(x) '===============================
void __fastcall TForm1::Button36Click(TObject *Sender)
{
if (Tc->d=='e') Edit1->Text="Error!";
Else
{
if (abs(StrToFloat(Edit1->Text))>1) Tc->d='e';
Else
if (RadioButton1->Checked)
Edit1->Text=acos(StrToFloat(Edit1->Text))/M_PI*180;
Else
Edit1->Text=acos(StrToFloat(Edit1->Text));
}
}
//===============================================================
//========================' MS '=================================
void __fastcall TForm1::Button21Click(TObject *Sender)
{
Tc->memory=StrToFloat(Edit1->Text);
Tc->mem=true;
}
//===============================================================
//========================' MR '=================================
void __fastcall TForm1::Button22Click(TObject *Sender)
{
if (Tc->mem) Edit1->Text=FloatToStr(Tc->memory);
}
//===============================================================
//========================' MC '=================================
void __fastcall TForm1::Button23Click(TObject *Sender)
{
Tc->mem=false;
}
//===============================================================
//========================' M+ '=================================
void __fastcall TForm1::Button24Click(TObject *Sender)
{
Tc->memory+=StrToFloat(Edit1->Text);
}
//===============================================================
//==========================' CE '===============================
void __fastcall TForm1::Button19Click(TObject *Sender)
{
Tc->a1=Tc->b1=Tc->point=Tc->end=Tc->flag=Tc->memory=false;
Tc->d='\0';
Edit1->Text="0,";
}
//===============================================================
//=========================' C '==================================
void __fastcall TForm1::Button20Click(TObject *Sender)
{
if (Tc->d!='e') Edit1->Text="0,";
}
//===============================================================
ЛІТЕРАТУРА
1) Кравець П. О. Методичні вказівки до виконання лабораторних робіт з дисципліни “Проблемно-орієнтовані мови програмування”, 2005.
2) Кравець П. О. Методичні вказівки до виконання курсової роботи з дисципліни “Проблемно-орієнтовані мови програмування”, 2005
3) Культин Н. С, С++ в задачах и примерах, Санкт-Петербург 2005.
4) Ричард Хезфилд, Лоуренс Кирби Исскуство программирования на С, Москва, Санкт-Петербург 2001
5) Павловская Т. А., Щупак Ю. А. С,С++ - программирование на языке високого уровня (Структурное программирование), Санкт-Петербург 2003
6) Романов Е. Л. Практикум по программированию на С++, Санкт-Петербург 2004
7) В.В. Войтенко С/С++ теорія та практика, навчально-методичний посібник.
8) Программирование в С++Builder 6 и 2006 (Архангельский А.Я., Тагин М.А., 2007)
9) Стівен Прата, Язык программирование С, 2002.
Дата добавления: 2015-10-31; просмотров: 115 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Інструкція користувачеві | | | Розділ I. Аналіз завдання |