по-моему что то не правильно в проверке ортогональности матрицы
Код:
#include <vcl>
#include <iostream>
#include <conio>
using namespace std;
//---------------------------------------------------------------------------
typedef int* ip;
bool ort (int **A, int **E, int n);
void main ()
{
system ("title Orthogonal matrix");
int n, **A = new int *[n], **E = new int *[n];
ort (A, E, n);
for (int i=0; i<n; i++)
{
delete[]A[i]; delete []E[i];
}
delete []A; delete []E;
system ("pause");
}
//---------------------------------------------------------------------------
bool ort (int **A, int **E, int n)
{
bool res=1;
cout <<"Vvedite razmernost' matricy A: ";
cin >>n;
A = new int*[n], E = new int*[n];
for (int i=0; i<n; i++)
{
A[i] = new int[n]; E[i]= new int[n];
}//Sozdanie matrizy A i E.
for (int i=0; i<n; i++)
{
for (int j=i; j<n; j++)
{
cout <<"a"<<i+1<<j+1<<"=";
cin >>A[i][j];
if (i!=j) A[j][i]=A[i][j];
}//j.
}//i. Vvod matrizy A.
for (int i=0; i<n; i++)
{
cout <<"\n";
for (int j=0; j<n; j++) cout <<A[i][j]<<"\t";
}//i. Vyvod matrizy A.
int elem=0;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
elem=0;
for (int k=0; k<n; k++) elem=elem+A[i][k]*A[j][k];
E[i][j]=elem;
if ((i==j && elem!=1) || (i!=j && elem!=0)) {res=0; break;}
}//j.
}//i.
if (res) cout <<"\n\nThe matrix A is orthogonal.\n"; else cout <<
"\n\nThe matrix A is not orthogonal.\n";
return res;
}//ort.