Как получить симметричную матрицу? - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно написать функцию:

void function (int * a [], int sq), проверяющая, симметрична ли квадратная матрица в квадратных градусах (относительно) к главной диагонали (слева вверху - справа внизу) и выполняем любое преобразование этой матрицы.

Моя основная :

#include <iostream>
using namespace std;
void  function(int* a[], int sq);
int main() {
const int sq = 10;
int a[sq][sq];

int *tab[sq];
for (int i = 0; i < 11; i++) {
    tab[i] = a[i];
}

function(tab,sq);
return 0;
}

Моя функция :

void  function(int* a[], int sq) {
cout << "tell me the number and i give you (sq x sq) matrix:";
cin >> sq;

for(int i = 0; i < sq; i ++) {
    for(int j = 0 ; j < sq; j++) {
        cin >> a[i][j];
    }
}
// 3 7 8 2
// 7 4 5 5
// 8 2 1 6
// 2 5 6 1

cout << "Matrix is " << sq << " degree:" << endl;

for(int i = 0; i< sq; i++) {
    for(int j = 0; j < sq; j++) {
        if(a[0][j] == a[i][0] && a[i-1][j] == a[i][j-1] ) {
            cout << a[i][j] << " "; //  if symetrical
        }  else {
            cout << a[j][i] << " "; //if not, lets do transposition
        }
    }
    cout << endl;
    }

    } 

Пример :

// 3 7 8 2
// 7 4 5 5
// 8 2 1 6
// 2 5 6 1

Это симметрично и должно дать мне вывод :

Матрица 4 степени:

3 7 8 2
7 4 5 5
8 2 1 6
2 5 6 1

Но она выполняет транспонирование и дает мне:

Матрица 4 степени:

3 7 8 2
7 4 2 5
8 5 1 6
2 5 6 1

Если я понимаю содержание упражнения. ..

1 Ответ

2 голосов
/ 03 апреля 2020

заменить на l oop, как показано ниже

ваш код:

for(int i = 0; i< sq; i++) {
    for(int j = 0; j < sq; j++) {
        if(a[0][j] == a[i][0] && a[i-1][j] == a[i][j-1] ) {
            cout << a[i][j] << " "; //  if symetrical
        }  else {
            cout << a[j][i] << " "; //if not, lets do transposition
        }
    }
    cout << endl;
    }

Заменить на код ниже:

for(int i = 0; i< sq; i++) {
    for(int j = i; j < sq; j++) {


        if(a[i][j] == a[j][i] ) {
            cout << a[i][j] << " "; //  if symetrical
        }  else {
            cout << a[j][i] << " "; //if not, lets do transposition
        }


    }
    cout << endl;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...