Здравствуйте. Нужна помощь с задачей: Дана действительная матрица размерности (n*n) .Если среднее арифметическое элементов стоящих над главной диагональю больше суммы элементов стоящих на побочной диагонали, то поменять местами строки и столбцы (транспонировать матрицу). В противном случае матрицу оставить без изменения.
У меня, если арифметическое элементов стоящих над главной диагональю меньше суммы элементов стоящих на побочной диагонали, то матрица остаётся без изменений, т.е. как надо.
Но, если арифметическое элементов стоящих над главной диагональю меньше суммы элементов стоящих на побочной диагонали, то матрица как-то неправильно транспонируется.
Помогите, пожалуйста, исправить.
Вот мой исходный код:
Код:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
n:=StringGrid1.ColCount;
k:=0;
sr:=0;
For i:=0 to n-1 do
For j:=0 to n-1 do
a[i+1,j+1]:=StrToInt(StringGrid1.Cells[j,i]);
For i:=1 to n-1 do
For j:=i+1 to n do
begin
k:=k+1;
sr:=sr+a[i,j];
end;
sr:=sr/k;
Edit2.Text:=('Среднее арифметическое элементов над главной диагональю=' + FloatToStr(sr));
j:=n+1;
For i:=1 to n do
begin
j:=j-1;
s:=s+a[i,j];
end;
Edit3.Text:=('Сумма элементов побочной диагонали=' + IntToStr(s));
if sr>s then begin
For i:=1 to n do
For j:=1 to n do begin
b:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=b;
end;
For i:=0 to n-1 do
For j:=0 to n-1 do
StringGrid1.Cells[j,i]:=IntToStr(a[j+1,i+1]);
end;
end;