14.11.2012, 13:28. Просмотров 290. Ответов 0
Программа написана с среде Borland Developer Studio, всё расчёты в программе происходят после нажатия кнопки на форме. Подскажите пожалуйста как эту программу переписать в Visual Studio 2005? Когда я создаю проект в Visual Studio 2005 как написано вот здесь
http://www.cecs.csulb.edu/~pnguyen/U...dio%202005.htm
и вставляю туда код, написанный в Borland Developer Studio, то после нажатия Build Solution в Visual Studio 2005 выдаётся ошибка fatal error C1083: Cannot open include file: 'vcl.h': No such file or directory d:\atraktor\atraktor\atr.cpp 4
Подскажите, как устранить эту ошибку. Вот полный код программы, написанный в Borland Developer Studio
//$$---- Form CPP ----
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <fstream.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double *x_x, *summ, *gistogr,*disper, *gistogr2, *gistogr2_1, *setka;
double alfa1, alfa2, ksi;
double *y1,*y2, *y3;
int nach_y1, nach_y2, nach_y3 ,r;
double h;
double pi;
double sigma;
long int N,M;
double A,B;
int hag, hag1,hag2,T, *count;
double min, max;
double a,b,a1,b1;//переменные минимума и максимума для построения дмумерной плотности
double MIN, MAX, MIN1, MAX1;//переменные минимума и максимума для построения дмумерной плотности
double minn,maxx,minn1,maxx1;
/*---------ВВод начальных данных-----------*/
h=0.001;
T=100;
N= int(T/h);
M=100;
sigma=1;
nach_y1=1;
nach_y2=1;
nach_y3=20;
r=19;
pi= 2*asin(1.0);
hag=40; //колличество интервалов разбиения для построения гистограммы
hag1=50; //колличество интервалов разбиения для построения двухмерной гистограммы
hag2=150;//колличество интервалов разбиения для построения двухмерного фазового портрета
/*-----------------------------------------*/
y1 =(double*)malloc(N*sizeof(double)); //Массив для расчета нужных функционалов
y2 =(double*)malloc(N*sizeof(double)); //
y3=(double*)malloc(N*sizeof(double)); //
summ =(double*)malloc(N*sizeof(double));//Массив для вторых моментов
x_x = (double*)malloc(N*sizeof(double));//Массив для расчета матожидания
disper = (double*)malloc(N*sizeof(double));//Массив для расчета дисперсии
gistogr = (double*)malloc(M*sizeof(double));// Массив для расчета гистограммы
gistogr2 = (double*)malloc(M*sizeof(double));//Вспомогательный массив для расчета двумерной гистограммы
gistogr2_1 = (double*)malloc(M*sizeof(double));//Вспомогательный массив для расчета двумерной гистограммы
for (int i = 0; i < N; i++)//Обнуление массивов
{
y1[i]=0;
y2[i]=0;
y3[i]=0;
summ[i]=0;
x_x[i]=0;
}
for (int i = 0; i < M; i++)
{
gistogr[i]=0;
gistogr2[i]=0;
gistogr2_1[i]=0;
}
y1[0] = nach_y1;
y2[0] = nach_y2;
y3[0] = nach_y3;
x_x[0] = x_x[0]+y1[0]/M;
summ[0]=summ[0]+(double)(y1[0]*y1[0])/M;
minn=y1[0];
maxx=minn;
minn1=y2[0];
maxx1=minn1;
FILE * yy1;
FILE * yy2;
yy1=fopen("вспомогательный_файл_для построения_2мерного_портрета_yy1.txt", "w");
yy2=fopen("вспомогательный_файл_для построения_2мерного_портрета_yy2.txt", "w");
for(int j = 0; j < M; j++)//цыкл для моделирования M штук траекторий
{
for(int i=0; i<N; i++)//цыкл для моделирования 1 траектории
{
alfa1 = (double)rand()/(double)RAND_MAX;
while(alfa1 == 0)
alfa1 = (double)rand()/(double)RAND_MAX;
alfa2 = (double)rand()/(double)RAND_MAX;
ksi = sqrt(-2*log(alfa1))*sin(2*pi*alfa2);//моделирование гаусовской случайной величины
y1[i+1] = y1[i]-h*10*(y1[i]-y2[i]);
y2[i+1] = y2[i]+h*(-y2[i]-y1[i]*y3[i]+r*y1[i])+sigma*y1[i]*(sqrt(h))*ksi;
y3[i+1] = y3[i]+h*(-(8/3)*y3[i]+y1[i]*y2[i]);
x_x[i+1]=x_x[i+1]+y1[i+1]/M; //Расчитывается оценка математического ожидания
summ[i+1]=summ[i+1]+(double)(y1[i+1]*y1[i+1])/M;//Расчитывается второй момент
fprintf(yy1, "%f " , y1[i]);
fprintf(yy2, "%f " , y2[i]);
if (y1[i]<minn)//Нахождение минимального и максимального эдемента в массивах y1 и y2
{
minn=y1[i];
}
if (y1[i]>maxx)
{
maxx=y1[i];
}
if (y2[i]<minn1)
{
minn1=y2[i];
}
if (y2[i]>maxx1)
{
maxx1=y2[i];
}
}
gistogr[j]=y1[N-1];
gistogr2[j]=y1[N-1];
gistogr2_1[j]=y3[N-1];
}
fclose(yy1);
fclose(yy2);
for (int i = 0; i <N; i++) // Расчет оценки дисперсии
disper[i]=summ[i]-(x_x[i]*x_x[i]);
FILE * date_y1;
FILE * date_y2;
FILE * date_y3;
FILE * matogidanie;
FILE * dispersiya;
FILE * razbienie;
date_y1 = fopen("Данные_Y1.txt","w");
date_y2 = fopen("Данные_Y2.txt","w");
date_y3 = fopen("Данные_Y3.txt","w");
matogidanie = fopen("Значение_матожидания.txt","w");
dispersiya = fopen("Значение_Дисперсии.txt","w");
razbienie = fopen("Разбиение_оси_абсцисс.txt","w");
for (int i = 0; i <N; i++)
{
fprintf( date_y1, "%f " , y1[i] );
fprintf( date_y2, "%f " , y2[i] );
fprintf( date_y3, "%f " , y3[i] );
fprintf( dispersiya , "%f " , disper[i] );
fprintf( matogidanie, "%f " , x_x[i] );
fprintf( razbienie, "%f " , h*i );
}
fclose(date_y1);
fclose(date_y2);
fclose(date_y3);
fclose(matogidanie);
fclose(dispersiya);
fclose(razbienie);
/*-------------------Начало построения гистограммы--------------------*/
min=gistogr[0];
max=min;
for (int i=1; i <M; i++) // цикл для определения максимального и минимального элемента
{
if (gistogr[i]<min)
{
min=gistogr[i];
}
if (gistogr[i]>max)
{
max=gistogr[i];
}
}
A=min;
B=max;
count=(int*)malloc(hag*sizeof(int));
setka=(double*)malloc(hag*sizeof(double));
for (int i = 0; i < hag; i++)
{
count[i]=0;
setka[i]=0;
}
setka[0]=A;
for (int j=0; j < hag; j++)
{
setka[j+1]=setka[j]+(double)(B-A)/hag;
}
int X1=hag;
for (int j=0; j < M; j++)
{
for (int i=0; i<X1; i++)
{
if ((setka[i]<=gistogr[j]) && (gistogr[j]<=setka[i+1]))
{
X1=i;
}
}
count[X1]=count[X1]+1;
X1=hag;
}
FILE * odnomernaya_gistogramma;
FILE * setka_odnomernaya_gistogramma;
odnomernaya_gistogramma = fopen("Одномерная_гистограмма.txt","w");
setka_odnomernaya_gistogramma = fopen("Сетка_для_одномерной_гистограммы.txt","w");
for (int i = 0; i <hag; i++)
{
fprintf( odnomernaya_gistogramma, "%d " , count[i] );
fprintf( setka_odnomernaya_gistogramma, "%f " , setka[i] );
}
fclose(odnomernaya_gistogramma);
fclose(setka_odnomernaya_gistogramma);
/*---------------Начало построения дмумерной плотности---------------*/
MIN=gistogr2[0];
MAX=MIN;
MIN1=gistogr2_1[0];
MAX1=MIN1;
for (int i=1; i <M; i++)
{
if (gistogr2[i]<MIN)
{
MIN=gistogr2[i];
}
if (gistogr2[i]>MAX)
{
MAX=gistogr2[i];
}
if (gistogr2_1[i]<MIN1)
{
MIN1=gistogr2_1[i];
}
if (gistogr2_1[i]>MAX1)
{
MAX1=gistogr2_1[i];
}
}
a=MIN;
b=MAX;
a1=MIN1;
b1=MAX1;
int razmer;
razmer=hag1*hag1;
int *count1;
count1= (int*)malloc(razmer*sizeof(int));
for (int i=0; i<razmer; i++)
count1[i]=0;
double const1,const2;
const1=double((b-a)/hag1);
const2=double((b1-a1)/hag1);
double *setka2_0, *setka2_1;
setka2_0=(double*)malloc(hag*sizeof(double));
setka2_1=(double*)malloc(hag*sizeof(double));
setka2_0[1]=a;
setka2_1[1]=a1;
for (int j = 1; j <= hag1; j++)
{
setka2_0[j+1]=setka2_0[j]+const1;
setka2_1[j+1]=setka2_1[j]+const2;
}
int X,Y;
X=hag1;
Y=hag1;
for (int j=0; j < M; j++)
{
for (int i=1; i <=X; i++)
{
if ((setka2_0[i]<=gistogr2[j]) && (gistogr2[j]<=setka2_0[i+1]))
X=i;
}
for (int k=1; k <=Y; k++)
{
if ((setka2_1[k]<=gistogr2_1[j]) && (gistogr2_1[j]<=setka2_1[k+1]))
Y=k;
}
count1[X+(Y-1)*hag1]= count1[X+(Y-1)*hag1]+1;
X=hag1;
Y=hag1;
}
FILE * SETKA2_0;
FILE * SETKA2_1;
SETKA2_0 = fopen("Сетка_для_построения_двухмерной_гистограммы_ось_абсцисс.txt","w");
SETKA2_1 = fopen("Сетка_для_построения_двухмерной_гистограммы_ось_ординат.txt","w");
for (int j = 1; j <=hag1; j++)
{
fprintf( SETKA2_0, "%f " , setka2_0[j] );
fprintf( SETKA2_1, "%f " , setka2_1[j] );
}
fclose(SETKA2_0);
fclose(SETKA2_1);
int peremennaya1;
peremennaya1=0;
FILE * MATRICA;
MATRICA = fopen("Матрица_для_построения_двумерной_плотности.txt","w");
for (int i = 1; i <=hag1; i++)
{
for (int k = 1; k <=hag1; k++)
{
peremennaya1= count1[k+(i-1)*hag1];
fprintf( MATRICA, "%d " , peremennaya1 );
}
fprintf( MATRICA, "\n");
}
fclose(MATRICA);
/*----------Начало построения 2хмерного фазового портрета----------*/
double *setka3_0, *setka3_1;
double C,D,C1,D1;
C=minn;
D=maxx;
C1=minn1;
D1=maxx1;
FILE * portret;
portret = fopen ("FAZOVYI_Portret_MinMax.txt","w");
fprintf( portret, "%f " , C );
fprintf( portret, "%f " , D );
fclose(portret);
FILE * portret1;
portret1 = fopen("FAZOVYI_portet_Min1,Max1.txt","w");
fprintf( portret1, "%f " , C1);
fprintf( portret1, "%f " , D1);
fclose(portret);
int razmer1=hag2*hag2;
int *count2;
count2= (int*)malloc(razmer1*sizeof(int));
for (int k = 0; k < razmer1; k++)
{
count2[k]=0;
}
double const3,const4;
const3=double((D-C)/hag2);
const4=double((D1-C1)/hag2);
setka3_0=(double*)malloc(hag2*sizeof(double));
setka3_1=(double*)malloc(hag2*sizeof(double));
setka3_0[1]=C;
setka3_1[1]=C1;
for (int j = 1; j <=hag2; j++)
{
setka3_0[j+1]=setka3_0[j]+const3;
setka3_1[j+1]=setka3_1[j]+const4;
}
int X2,Y2;
X2=hag2;
Y2=hag2;
long int P;
double YY1,YY2;
YY1=0;
YY2=0;
P=M*N;
ifstream f("вспомогательный_файл_для построения_2мерного_портрета_yy1.txt");
ifstream f1("вспомогательный_файл_для построения_2мерного_портрета_yy2.txt");
for (int j=0; j <P; j++)
{
f>>YY1;
f1>>YY2;
for (int i=1; i <=X2; i++)
{
if ((setka3_0[i]<=YY1) && (YY1<=setka3_0[i+1]))
X2=i;
}
for (int k=1; k <=Y2; k++)
{
if ((setka3_1[k]<=YY2) && (YY2<=setka3_1[k+1]))
Y2=k;
}
count2[X2+(Y2-1)*hag2]= count2[X2+(Y2-1)*hag2]+1;
X2=hag2;
Y2=hag2;
}
f.close();
f1.close();
FILE * matr;
matr = fopen("FAZOVYI_PORTRET.txt","w");
for (int i = 1; i <=hag2; i++)
{
for (int k = 1; k <=hag2; k++)
{
fprintf( matr, "%d " , count2[k+(i-1)*hag2] );
}
fprintf( matr, "\n");
}
fclose(matr);
}
//---------------------------------------------------------------------------
Заранее спасибо.