Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2013, 21:21   #1
Ромаха
Новичок
Джуниор
 
Регистрация: 23.06.2013
Сообщений: 1
По умолчанию метод зейделя в Делфи

Помогите исправить ошибку! [Error] Unit1.pas(103): "This form of method call only allowed for class methods"
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Grids, Unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;



 var
  Form1: TForm1;
  a:mat;
b,x:vek;
i,n,it,j:integer;
eps: extended;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
n:=3; edit1.Text:=inttostr(n);
stringgrid1.Cells[0,0]:=' A';
stringgrid2.Cells[0,0]:=' B';
stringgrid3.Cells[0,0]:='Решение';
stringgrid1.RowCount:=n+1;
stringgrid1.ColCount:=n+1;
stringgrid2.RowCount:=n+1;
stringgrid3.RowCount:=n+1;

 stringgrid1.Cells[1,1]:='5';
 stringgrid1.Cells[2,1]:='-2';
 stringgrid1.Cells[3,1]:='1';
 stringgrid1.Cells[1,2]:='-2';
 stringgrid1.Cells[2,2]:='9';
 stringgrid1.Cells[3,2]:='6';
 stringgrid1.Cells[1,3]:='1';
 stringgrid1.Cells[2,3]:='1';
 stringgrid1.Cells[3,3]:='8';

 stringgrid2.Cells[0,1]:='26';
 stringgrid2.Cells[0,2]:='6';
 stringgrid2.Cells[0,3]:='8';

for i:=1 to n do
begin
stringgrid1.Cells[i,0]:=' i='+inttostr(i);
stringgrid1.Cells[0,i]:=' j='+inttostr(i);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(edit1.Text);
stringgrid1.RowCount:=n+1;
stringgrid1.ColCount:=n+1;
stringgrid2.RowCount:=n+1;
stringgrid3.RowCount:=n+1;
for i:=1 to n do
begin
stringgrid1.Cells[i,0]:=' i='+inttostr(i);
stringgrid1.Cells[0,i]:=' j='+inttostr(i);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
eps:=strtofloat(edit2.text);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=strtofloat(stringgrid1.Cells[j,i]);
for i:=1 to n do
b[i]:=strtofloat(stringgrid2.Cells[0,i]);

TSisur.Zeidel(a,b,n,eps,x,it);_____ошибка здесь !!!
for i:=1 to n do
stringgrid3.Cells[0,i]:=floattostrf(x[i],fffixed,9,5);
label1.caption:=inttostr(it);
end;

end.
Помогите исправить ошибку!
Вложения
Тип файла: rar билет 6.rar (201.7 Кб, 15 просмотров)

Последний раз редактировалось Ромаха; 24.06.2013 в 11:40.
Ромаха вне форума Ответить с цитированием
Старый 25.06.2013, 20:14   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var siska: TSisur;
begin
eps:=strtofloat(edit2.text);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=strtofloat(stringgrid1.Cells[j,i]);
for i:=1 to n do
b[i]:=strtofloat(stringgrid2.Cells[0,i]);

siska.Zeidel(a,b,n,eps,x,it);_____ошибка здесь !!!
for i:=1 to n do
stringgrid3.Cells[0,i]:=floattostrf(x[i],fffixed,9,5);
label1.caption:=inttostr(it);
end;
так правильно, но не до конца. Используя класс TSisur, не мешает задать ему конструктор и деструктор, иначе компилятор будет предупреждать. что переменная siska может быть неинициализирована.

Еще компилятор будет выдавать предупреждения на переменные i И j - счетчики цикла нельзя делать глобальными переменными, чревато проблемами.

В общем, курите объектно-ориентированное программирование до полного просветления - и таких ошибок не будет
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Зейделя. c++ Онечка Помощь студентам 0 14.01.2013 09:11
метод простых операций и метод гаусса зейделя tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 1 23.09.2012 14:46
Метод Зейделя с++ Fackey Помощь студентам 3 29.01.2011 16:26
Метод Зейделя True_girl Помощь студентам 1 19.04.2010 16:16
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40