Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2010, 05:54
Jack Stone Jack Stone вне форума
Прохожий
 
Регистрация: 21.12.2010
Сообщения: 5
Репутация: 10
Лампочка Метод прогонки

Привет всем. У меня есть код программы, метода прогонки. Плиз помогите. Нужно сделать так, что бы в 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: Читаем правила и пользуемся тегами, иначе последуют санкции!

Последний раз редактировалось Admin, 21.12.2010 в 09:42.
Ответить с цитированием
  #2  
Старый 21.12.2010, 07:21
Аватар для Не мёртвый АНАРХИСТ
Не мёртвый АНАРХИСТ Не мёртвый АНАРХИСТ вне форума
Прохожий
 
Регистрация: 20.12.2010
Сообщения: 3
Репутация: 10
По умолчанию

Сделай так:

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  
Старый 21.12.2010, 07:32
Jack Stone Jack Stone вне форума
Прохожий
 
Регистрация: 21.12.2010
Сообщения: 5
Репутация: 10
По умолчанию

[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  
Старый 21.12.2010, 07:37
Аватар для Не мёртвый АНАРХИСТ
Не мёртвый АНАРХИСТ Не мёртвый АНАРХИСТ вне форума
Прохожий
 
Регистрация: 20.12.2010
Сообщения: 3
Репутация: 10
По умолчанию

покажи всю процедуру ввода
Ответить с цитированием
  #5  
Старый 21.12.2010, 07:43
Jack Stone Jack Stone вне форума
Прохожий
 
Регистрация: 21.12.2010
Сообщения: 5
Репутация: 10
По умолчанию

у меня все в одной кнопке... расчет идет...

тоесть есть писать как

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  
Старый 21.12.2010, 07:47
Аватар для Не мёртвый АНАРХИСТ
Не мёртвый АНАРХИСТ Не мёртвый АНАРХИСТ вне форума
Прохожий
 
Регистрация: 20.12.2010
Сообщения: 3
Репутация: 10
По умолчанию

Так у тебя не A[i,j] a M[i,j]
Ответить с цитированием
  #7  
Старый 21.12.2010, 07:53
Jack Stone Jack Stone вне форума
Прохожий
 
Регистрация: 21.12.2010
Сообщения: 5
Репутация: 10
По умолчанию

точно, ступил=)

[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  
Старый 21.12.2010, 08:00
Jack Stone Jack Stone вне форума
Прохожий
 
Регистрация: 21.12.2010
Сообщения: 5
Репутация: 10
По умолчанию

хехе=) короче я посткавил f[i,j] и заработало...

правда раз посчитал и то с ошибками. за то считает и запускается=)
правда теперь пишет ошибку когда считаю... щас буду разбираться=)

благодарю за помощь ^_^
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025