Ошибка Invalid floating point operation(Delphi)
[ code ] [ /code ]procedure TForm1.MMUL(A, B : TMatrIx; out C : TMatrIx);
label fInIsh;
var I,g,n:Integer;
e:real;
begIn
e:=0;
If (GetColCount(A)=1)and(GetRowCount(A)=1)and(GetColCount(B)=1)and(GetRowCount(B)=1) then begIn
SetLength(C,1,1);
C[0,0]:=RoundTo(A[0,0]*B[0,0],-ExactItude);
goto fInIsh;
end;
If (GetColCount(A)=1)and(GetRowCount(A)=1) then begIn
MMULC(a[0,0],B,C);
goto fInIsh;
end;
If (GetColCount(B)=1)and(GetRowCount(B)=1) then begIn
MMULC(b[0,0],A,C);
goto fInIsh;
end;
If GetColCount(A)=GetRowCount(B) then begIn
SetLength(C,GetColCount(B),GetRowCount(A));
for I:=0 to Length(c)-1 do
for g:=0 to Length(c[0])-1 do begIn
for n:=0 to GetColCount(A)-1 do
e:=e+RoundTo(A[n,I]*B[g,n],-ExactItude);
c[g,I]:=e;
e:=0;
end;
end
else
raIse EMathError.Create('Длина строки первой матрицы и высота столбца второй матрицы неравны');
fInIsh:
end;
[/code]
Есть элемент кода вызывающий процедуру:
SetLength(XX_1X_,mx+1,n);
SetLength(XX_1,mx+1,mx+1);
setlength(X_,n,mx+1);
MMUL(XX_1,X_,XX_1X_);
Помогите кто- нибудь выяснить причину! Это срочно ппц. Бокалаврская в 9 сдаетса изза этого неработает ничего((((
просто вродебы все правильно А[MxN] multiply В[NxK]= С[MxK].
Господи Боже, когда это кончится. Оформьте код и скажите, в какой строке ошибка. Искать неохота. У Вас глюк где то с числом с плавающей запятой - это видно из названия.
e:=e+RoundTo(A[n,I]*B[g,n],-ExactItude);
Код:
RoundTo(A[n,I]*B[g,n],-ExactItude);
точно ли адекватное значение? Посмотрите отладчиком
ps. Оформьте код тэгами [ code ] [ /code ] без пробелов внутри скобок. Иначе нарушаете правила форума.
что возвращает
Код:
RoundTo(A[n,I]*B[g,n],-ExactItude);
?
точно ли адекватное значение? Посмотрите отладчиком
незнаю, должен возвращать умноженный эл -т строки на соответств столбец
вот и проверьте, возвращает ли. Должен то должен, только программы не всегда работают так, как должны, а точнее авторам иногда кажется, что должны, а на самом деле не так. Бегом в отладчик.
пишет wrong expression , и undeclarated identifier e. непонятно . E: real; Просто эта процедура работает для умножения матриц например X''*X а нехочет умножать ((X''*X)^-1)*X. Воттакие дела(
Лично у меня такая ашыпка как правило возникает, когда я забываю что-нибудь инициализировать.
эх я там коечто подправил и возникает теперь АКСЭС ВАЙОЛЭЙШОН! гонево какоето... помогите..