
22.02.2013, 17:06
|
Прохожий
|
|
Регистрация: 14.02.2013
Сообщения: 17
Репутация: 10
|
|
For loop control variable must be simple local variable
Создал программу разложения функции в ряд Фурье. Выдает ошибку:
For loop control variable must be simple local variable
Таких 7 штук на каждый коэффициент собственно, хотя в каждой процедуре задается отдельно эта самая локальная переменная для расчета массивов. Код программы:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, TeEngine, Series, ExtCtrls,
TeeProcs, Chart, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Button2: TButton;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Series4: TLineSeries;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//l: real;
//i: integer;
y0,y1,y2,y3,x,a1,a2,a3,b1,b2,b3,a0: real;
l: integer;
d: real;
h1: array[0..100] of real; //a1
h2: array[0..100] of real; //a2
h3: array[0..100] of real; //a3
h4: array[0..100] of real; //a0
k1: array[0..100] of real; //b1
k2: array[0..100] of real; //b2
k3: array[0..100] of real; //b3
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента а1
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//a1
//h1[0]:=0;
a1:=0;
for i=0 to l do begin
h1[i]:=(3.14-i*0.314)*d*cos(3.14-i*0.314);
a1:=a1+h1[i];
end;
Label9.caption:=FloatToStr(a1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// ГРАФИКИ
x:=-4; while x<4 do begin
y1:=0.5*a0+a1*cos(x)+b1*sin(x);
y0:=x;
y2:=y1+a2*cos(2*x)+b2*sin(2*x);
y3:=y2+a3*cos(3*x)+b3*sin(3*x);
series1.AddXY(x,y1);
series2.AddXY(x,y0);
series3.AddXY(x,y2);
series4.AddXY(x,y3);
x:=x+0.1;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента а0
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//a0
//h1[0]:=0;
a0:=0;
for i=0 to l do begin
h4[i]:=(3.14-i*0.314)*d;
a0:=a0+h4[i];
end;
Label8.caption:=FloatToStr(a0);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента а2
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//a2
//h1[0]:=0;
a2:=0;
for i=0 to l do begin
h2[i]:=(3.14-i*0.314)*cos((3.14-i*0.314)*2)*d;
a2:=a2+h2[i];
end;
Label10.caption:=FloatToStr(a2);
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента а3
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//a3
//h1[0]:=0;
a3:=0;
for i=0 to l do begin
h3[i]:=(3.14-i*0.314)*cos((3.14-i*0.314)*3)*d;
a3:=a3+h3[i];
end;
Label11.caption:=FloatToStr(a3);
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента b1
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//b1
//k1[0]:=0;
b1:=0;
for i=0 to l do begin
k1[i]:=(3.14-i*0.314)*sin(3.14-i*0.314)*d;
b1:=b1+k1[i];
end;
Label12.caption:=FloatToStr(b1);
end;
procedure TForm1.Button7Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента b2
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//b2
//k2[0]:=0;
b2:=0;
for i=0 to l do begin
k2[i]:=(3.14-i*0.314)*sin((3.14-i*0.314)*2)*d;
b2:=b2+k2[i];
end;
Label13.caption:=FloatToStr(b2);
end;
procedure TForm1.Button8Click(Sender: TObject);
var
i: integer;
begin
// Вычисление коэффициента b3
l:=StrToInt(Edit1.Text);
d:=(2*3.14)/l; // Длина отрезка
//b3
//k3[0]:=0;
b3:=0;
for i=0 to l do begin
k3[i]:=(3.14-i*0.314)*sin((3.14-i*0.314)*3)*d;
b3:=b3+k3[i];
end;
Label14.caption:=FloatToStr(b3);
end;
end.
Последний раз редактировалось ugicedeath, 22.02.2013 в 17:34.
|