![]() |
|
#1
|
|||
|
|||
![]() Привет всем. У меня есть код программы, метода прогонки. Плиз помогите. Нужно сделать так, что бы в StringGrid1 числа вводились не рандомно, а в ручную. Считать она считает. но мне требует ввод данных самому. Плз, помогите кто может ^_^
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; const n=4; type m=array [1..(n+1),1..n] of real; ml=array [1..n] of real; TForm1 = class(TForm) StringGrid1: TStringGrid; StringGrid2: TStringGrid; StringGrid3: TStringGrid; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; i,j:integer; f:m; x,a,b:ml; d:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin for i:=1 to n+1 do // Заполнение матрицы for j:=1 to n do begin if i=j then f[i,j]:=random(5)+1 else if (i-j)=1 then f[i,j]:=random(5)+1 else if (j-i)=1 then f[i,j]:=random(5)+1 else if i=(n+1) then f[i,j]:=random(5)+1 else f[i,j]:=0; str(f[i,j]:10:3,d); StringGrid1.Cells[(i-1), (j-1)]:=d; end; randomize(); for i:=1 to n do // Пряхой ход begin if (f[i,i]+f[i-1,(i)]*a[i-1])=0 then begin a[i]:=0; b[i]:=0; end else begin if i=n then a[i]:=0 else a[i]:=-f[i+1,(i)]/(f[i,i]+f[i-1,(i)]*a[i-1]); b[i]:=(f[(n+1),i]-f[i-1,(i)]*b[i-1])/(f[i,i]+f[i-1,(i)]*a[i-1]); end; end; for i:=1 to n do begin str(a[i]:10:3,d); StringGrid2.Cells[(i-1), 0]:=d; str(b[i]:10:3,d); StringGrid2.Cells[(i-1), 1]:=d; end; for i:=n downto 1 do // Обратный ход begin x[i]:=a[i]*x[i+1]+b[i]; str(x[i]:10:3,d); StringGrid3.Cells[I-1,0]:=d; end; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. Последний раз редактировалось Admin, 21.12.2010 в 09:42. |
#2
|
||||
|
||||
![]() Сделай так:
Object Inspector / StringGrid / Options / goEditing / true. Потом код: for i:=1 to n+1 do for j:=1 to n do m[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]); Последний раз редактировалось Не мёртвый АНАРХИСТ, 21.12.2010 в 07:42. |
#3
|
|||
|
|||
![]() [DCC Warning] Unit1.pas(41): W1019 For loop control variable must be simple local variable
выдаёт ошибку в строке a[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]); =( |
#4
|
||||
|
||||
![]() покажи всю процедуру ввода
|
#5
|
|||
|
|||
![]() у меня все в одной кнопке... расчет идет...
тоесть есть писать как procedure TForm1.Button1Click(Sender: TObject); begin for i:=1 to n do for j:=1 to n+1 do a[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]); , а затем прямой и обратный ход, то он пишет ошибку... в a[i,j]: если юзать мой пример, то он работает... но мне над ввод в ручную... |
#6
|
||||
|
||||
![]() Так у тебя не A[i,j] a M[i,j]
|
#7
|
|||
|
|||
![]() точно, ступил=)
[DCC Error] Unit1.pas(44): E2029 '(' expected but '[' found for i:=1 to n do for j:=1 to n+1 do m[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]); он ругается на скобочку походу... переделываю на круглую(что само по себе бред) и он пишет [DCC Error] Unit1.pas(44): E2029 ')' expected but ',' found ... |
#8
|
|||
|
|||
![]() хехе=) короче я посткавил f[i,j] и заработало...
правда раз посчитал и то с ошибками. за то считает и запускается=) правда теперь пишет ошибку когда считаю... щас буду разбираться=) благодарю за помощь ^_^ |