Создание приложений в С++ Builder
Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/NewApplication.
C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта.
Рис.7 Файл проекта
Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:
· Файл формы с расширением.DFM, содержащий информацию о ресурсах окон для конструирования формы
· Файл модуля с расширением.CPP, содержащий код на C++.
· Заголовочный файл с расширением .H, содержащий описание класса формы.
Когда вы добавляете новую форму, файл проекта автоматически обновляется.
Для того чтобы добавить одну или более форм к проекту , выберите пункт меню File/NewForm. Появится пустая форма, которая будет добавлена к проекту. Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и выбрать подходящий шаблон из репозитория объектов.
Рис.8 Шаблоны форм
Для того, чтобы просто откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того, чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).
Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows.
Пример: создание простейшего приложения
Теперь попробуем создать простейшее приложение, позволяющее вводить текст в редактируемое поле и добавлять этот текст к списку при нажатии мышью на кнопку. Выберем пункт меню File/New Application для создания проекта и сохраним его главную форму под именем samp1.cpp, а сам проект под именем samp.mak. Поместим на форму компоненты Button, Edit и ListBox со страницы Standard палитры компонент.
Рис. 9. Размещение компонентов на форме
После этого выберем на форме компонент Edit и удалим текущее значение свойства Text. Затем установим свойство Caption для Button1 равным "Добавить".
Чтобы добавить обработчик события OnClick для кнопки Добавить, нужно выбрать эту кнопку на форме, открыть страницу событий в инспекторе объектов и дважды щелкнуть мышью на колонке справа от события OnClick. В соответствующей строке ввода появится имя функции. C++ Builder сгенерирует прототип обработчика событий и покажет его в редакторе кода. После этого следует ввести следующий код в операторные скобки { ... } тела функции:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!(Edit1->Text == ""))
{
ListBox1->Items->Add(Edit1->Text);
Edit1->Text = "" ;
}
}
Для компиляции приложения в меню Run выберем пункт Run. Теперь можно что-нибудь ввести в редактируемое поле, нажать мышью на кнопку Добавить и убедиться, что вводимые строки добавляются к списку.
Рис.10. Так выглядит готовое приложение.
Теперь модифицируем приложение, добавив кнопки Удалить и Выход. Для этого добавим еще две кнопки, изменим их свойство Caption и создадим обработчики событий, связанных с нажатием на эти кнопки:
Рис. 11. Модифицированное приложение
Для кнопки Удалить:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (!(ListBox1->ItemIndex == -1))
ListBox1->Items->Delete(ListBox1->ItemIndex);
}
Для кнопки Выход:
Close();
Сохраним и скомпилируем приложение, а затем протестируем его.
Итак, мы познакомились со средой разработки Borland C++ Builder и создали простое приложение. В следующих статьях этого цикла будут описаны приемы манипуляции компонентами на форме и более подробно рассмотрены особенности поведения различных компонентов в приложении
Практична частина
#include<iostream.h>
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
#include<process.h>
#include<complex.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip.h>
#define MAX 50
#define ARRAYMAX 10
void initialize();
void menu1();
void menu2();
void data();
void graphch();
void corre();
void mean();
void median();
void graph();
void makegraph(float p[]);
void pie();
void mode();
void variance();
int input();
void correlation();
void regress();
void curvefit();
int midx = getmaxx()/2;
int midy = getmaxy()/2;
int choice1,choice2,choice3,choice4,choice5,choice6,choice7,choice8;
int a[100],b[100],c[100],d[100],e[100],f[100],g[100];
float men,medin,mod,cxy,vx,vy;
int a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1;
long double z1=0,z2=0,z3=0,z4=0,z5=0,z6=0,z7=0,z8=0,byx=0,bxy=0,mx=0,my=0;
static int zzz;
s =0;
float s2 =0.0;
s3 =0;
s1 =0;
float sum =0.0;
float mean,variance,v1,v2,v3;
data();
clrscr();
switch(choice5)
{
case 1:
{
cout<<" Enter the total no of individual observations";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<" X"<<i+1<< " =";
cin>>a[i];
s = s+ a[i];
}
mean = s/n;
for(i=0;i<n;i++)
{
sum = sum+ pow((a[i]-mean),2);
}
clrscr();
cout<<"The values of individual observations are ";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
variance = sum/n;
break;
}
case 2:
{
cout<<"Enter the no of data";
cin>>nn;
cout<< "Enter the class interval size";
cin>>ci;
cout<<"Enter the upper most level";
cin>>up;
cout<<" Enter the lowermost level";
cin>>lo;
cout<<"Enter the frequency in order\n";
for(int i=0;i<nn;i++)
{ b[i] = ((up + ci) + up)/2;
up = up + ci;
cout<<" Freq"<<i+1<<" =";
cin>>c[i];
}
for(i=0;i<nn;i++)
{
d[i] = b[i] - b[nn/2];
e[i] = d[i]/ci;
}
for(i=0;i<nn;i++)
cout<<e[i]<<" ";
cout<<endl;
float sum2,sum3,sum4;
sum2 = 0.0;
sum3 =0.0;
sum4 = 0.0;
for(i=0;i<nn;i++)
{
sum2 = sum2 +(c[i]*e[i]);
sum3 = sum3 +(c[i]*pow(e[i],2));
sum4 = sum4+ c[i];
}
cout<<"The sum of f * u = "<<sum2<<endl;
cout<<" The sum of f*u2 = "<<sum3<<endl;
cout<<" The sum of f = "<<sum4<<endl;
v1 = sum3/sum4;
cout<<" The value of 1 = "<<v1<<endl;
v2 = sum2/sum4;
cout<<" The value of 2 = "<<v2<<endl;
v3 = pow(v2,2);
variance = (pow(ci,2)*(v1 -v3));
int u= up;
cout<<"Class\t"<<setw(12)<<"Mid "<<setw(10)<<"Frequency\n";
cout<<"interval\t"<<setw(12)<<"value"<<endl;
for( int k=0;k<nn;k++)
{
cout<<u<<" - "<<u+ci<<"\t"<<setw(12)<<b[k]<<setw(10)<<c[k]<<endl;
u = u+ci;
}
break;
}
case 3:
{ cout<<"Enter the total no of data";
cin>>nn;
char s[20],s4[20];
cout<<" X denotes ";
cin>>s;
cout<<" Frequency denotes ";
cin>>s4;
for(int i=0;i<nn;i++)
{
cout<<"X"<<i+1<<" =";
cin>>a[i];
cout<<"Freq"<<i+1<<" =";
cin>>b[i];
s3 = s3+b[i];
}
cout<<"The sum of f = "<<s3<<endl;
for(i=0;i<nn;i++)
{
s1 =s1+ (a[i]*b[i]);
}
cout<<"The sum of f*x = "<<s1<<endl;
mean = s1/s3;
for(i=0;i<nn;i++)
{
c[i] = pow((a[i]-mean),2);
s2 = s2 +(c[i]*b[i]);
}
cout<<"Mean = "<<mean<<endl;
cout<<"The sum of deviations = "<<s2<<endl;
variance = s2/s3;
cout<<setw(15)<<s<<setw(20)<<s4<<endl<<endl;
for(i=0;i<nn;i++)
{
cout<<setw(15)<<a[i]<<setw(20)<<b[i]<<endl;
}
break;
}
default:
{cout<<" Sorry wrong choice";
getch();
data();
}
}
cout<<" Variance ="<<variance;
getch();
int z=1;
while(z==1||z==2)
{
cout<<"\n\n\n\n\nPress 1 to return to previos menu";
cout<<"\nPress 2 to exit";
cin>>z;
if(z==1)
menu2();
else if(z==2)
exit(0);
else cout<<"Wrong choice";
}
}
char s[20],s1[20];
int input()
{
int n;
gotoxy(2,6);
cout<<"Enter the total no of data";
cin>>n;
cout<<"Enter the variable x and y values\n";
cout<<" X denotes ";
cin>>s;
cout<<" Y denotes ";
cin>>s1;
for(int i=0;i<n;i++)
{
cout<<" X"<<i+1<<" =";
cin>>f[i];
cout<<" Y"<<i+1<<" =";
cin>>g[i];
}
return(n);
}
void correlation()
{
int n;
corre();
initialize();
switch(choice4)
{
case 1:
{
n =input();
clrscr();
cleardevice();
initialize();
settextstyle(7,HORIZ_DIR,0);
outtextxy(50,30,"SCATTER DIAGRAM");
line(50,400,600,400);
line(50,400,50,50);
outtextxy(556,410,s);
settextstyle(7, VERT_DIR,0);
outtextxy(30,375,s1);
settextstyle(7, HORIZ_DIR,0);
for(int i=0;i<n;i++)
{ int x1 = f[i]+ 50;
int y1 = 400- g[i];
setfillstyle(SOLID_FILL,14);
setcolor(14);
circle(x1,y1,1);
floodfill(x1,y1,14);
}
break;
}
case 2:
{// clrscr();
// cleardevice();
float sum2,sum3,sum4,sum5,sum6;
n = input();
sum2 = 0.0;
sum3 =0.0;
sum4 =0.0;
sum5 =0.0;
sum6 =0.0;
clrscr();
cleardevice();
for(int i=0;i<n;i++)
{ sum2 = sum2 + f[i];
sum3 = sum3 + g[i];
}
cout<<setw(15)<<" X "<<setw(20)<<" Y "<<endl<<endl;
for(i=0;i<n;i++)
{
cout<<setw(15)<<f[i]<<setw(20)<<g[i]<<endl;
}
cout<<" The sum of X = "<<sum2<<endl;
cout<<"The sum of Y = "<<sum3<<endl;
float mex = sum2/n;
float mey = sum3/n;
cout<<" The mean of X = "<<mex<<endl;
cout<<"The mean of Y = "<<mey<<endl;
for(i=0;i<n;i++)
{
sum4 = sum4 +((f[i] -mex)*(g[i]-mey));
sum5 = sum5 + pow((f[i]-mex),2);
sum6 = sum6+ pow((g[i]-mey),2);
}
cout<<" The sum of products of deviation from mean of X and Y = "<<sum4<<endl;
cout<<"The sum of squares of deviation from mean of X = "<<sum5<<endl;
cout<<" The sum fo squares of deviation from mean of Y = "<<sum6<<endl;
float cov = sum4/n;
float varx = sqrt(sum5/n);
float vary = sqrt(sum6/n);
float coeff = ((cov/varx)/vary);
cout<<" THE COEFFICIENT OF CORRELATION = "<<coeff<<endl<<endl;
if(coeff<=1 && coeff>= -1)
{
if(coeff == -1)
cout<<" There is perfect negative correlation between X and Y\n";
else if(coeff ==1)
cout<<"There is perfect positive correlation between X and Y\n";