Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.05.2010
Сообщений: 11
1

Обратная матрица. Исправить программу

23.12.2011, 09:37. Показов 971. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Мне нужно найти обратную матрицу (7Х7). Я на этом форуме поискала,нашла функцию.Вроде, все правильно сделала. Но программа выдает: Project Project1.exe raised exeption class EConvertError with message "''is not a valid floating point value '. Process stopped. Use Step or Run to Continue.

Матрицу исходную я заполнила, почему ему не нравится, не понимаю(( Ребят, помогите, пожалуйста)
Как мне сказали: "У вас где-то выскакивает не допустимое дробное значение!" А как посмотреть где оно выскакивает? А оно выскакивает когда уже непосредственно должна выводиться обратная матрица?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids;
Const
N0=7;
 
Type
Matrix=Array[0..N0-1, 0..N0-1] Of Extended;
a= array[1..7,1..7] of real;
type
TForm1 = class(TForm)
strngrd1: TStringGrid;
strngrd2: TStringGrid;
btn1: TBitBtn;
procedure btn1Click(Sender: TObject);
private
function MatrixOpred(F: Matrix; Const N: Byte):real;
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
{ TForm1 }
 
function TForm1.MatrixOpred(F: Matrix; const N: Byte): real;
Var
B: Matrix;
d, t, y, g, s: Extended;
k, c, i, j, v, kn, l: Byte;
Begin 
kn:=0;
If (N=1) Then D:=F[0, 0]
Else If (N=2) Then D:=F[0, 0]*F[1, 1]-F[0, 1]*F[1, 0] 
Else
Begin 
For k:=0 To N-2 Do 
Begin
D:=F[k, k];
If (d=0) Then
Begin 
l:=0;
Repeat
l:=l+1; 
Until ((F[k+l, k]<>0) Or (l>=N));
If (l<N) Then
Begin
For v:=k To N-1 Do
Begin
B[k, v]:=F[k, v];
F[k, v]:=F[k+l, v];
F[k+l, v]:=B[k, v];
End;
d:=F[k, k];
kn:=kn+1;
End
Else
Begin
MatrixOpred:=0;
Exit;
End;
End;
 
For j:=k To N-1 Do B[k, j]:=F[k, j];
 
For c:=k+1 To N-1 Do 
Begin
T:=F[c, k]; 
If (t<>0) Then 
Begin
If (d<>0) Then 
y:=t/d;
 
For j:=k To N-1 Do
Begin
F[k, j]:=B[k, j];
F[k, j]:=F[k, j]*y; 
F[c, j]:=F[c, j]-F[k, j];
End;
End;
End;
 
If (g<>F[k, k]) Then
For j:=k To N-1 Do F[k, j]:=B[k, j];
End;
 
D:=1;
j:=0;
For i:=0 To N-1 Do
Begin
D:=D*F[i, j]; 
Inc(j);
End;
 
If (Odd(Kn)) Then D:=-D;
End;
MatrixOpred:=D;
 
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var A,B,F:Matrix;
i,j,k,l,p,q,n:integer;
begin
for i:=1 to 7 do
for j:=1 to 7 do
begin
A[i,j]:= StrToFloat(strngrd1.cells[i,j])
end;
 
for k:=1 to 7 do
for l:=1 to 7 do
begin
F[i,j]:=A[i,j]
end;
n:=7;
for p:=1 to 7 do
for q:=1 to 7 do
begin
strngrd2.cells[p,q]:=FloatToStr(MatrixOpred(F,N))
end;
end;
 
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2011, 09:37
Ответы с готовыми решениями:

Обратная матрица
Всем привет! Памагите праграмировати в Delphi рещение обратной матрицы, вот щто я зделала для...

Обратная матрица
помогите разобрать код пожалуйста . кусок var var Type TMatr=array of array of real; ...

Обратная матрица Гаусса
Здравствуйте)) Помогите пожалуйста дорешать задачу про метод Гаусса. Мне осталось найти обратную...

Не верная обратная матрица
Прога работает,но неверно(все ячейки одним числом заполняет), по моему слишком много циклов....

1
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
23.12.2011, 12:45 2
Ошибка говорит, что делается попытка конвертировать пустую строку в тип Float, по всей видимости ошибка эта на 117 строке кода, в SgtingGrid ячейки нумеруются с нуля, то есть если введено в диапазон 7 на 7, то при обращении от 1 до 7 и есть ошибка конвертирования. Нужно от 0 до 6 , то есть
Delphi
1
for i := 0 to 6 do
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2011, 12:45

Обратная матрица с класссами
Заказал прогу у плохого автора и он мне вынес все мозги. Помогите дописать (если там есть вообще...

Обратная матрица методом Гаусса
Нужно написать программу нахождения обратной матрицы методом Гаусса в Delphi. Я не очень разбираюсь...

Обратная матрица, исправить ошибку
помогите исправить ошибки, код блокс пишет что не верный тип для массива вот сам код #include...

По-ите исправить ошипку!обратная матрица 4x4
function gcd (a,b:integer) :integer; var swapp:integer; begin clrscr; while b&lt;&gt;0 do begin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.