Top.Mail.Ru
Ответы

На с++ транспонирование матрицы...

Написал прогу, но матрица меняется, но не транспонируется, в чём дело? Вот код

int _tmain(int argc, _TCHAR* argv[])
{
int a[4][4]= {{1,7,3,6},
{8,5,3,12},
{5,11,78,16},
{13,41,2,78}};

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

{
a[j]=a[j];
}
}

for (int i=0; i<4; i++)
{ printf("\r\n");
for (int j=0; j<4; j++)
{ printf(" %d", a[j]);
}

}

return 0;
}

Дополнен

int _tmain(int argc, _TCHAR* argv[])
{
int a[4][4]= {{1,7,3,6},
{8,5,3,12},
{5,11,78,16},
{13,41,2,78}};

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

{
a[j]=a[j];
}
}

for (int i=0; i<4; i++)
{ printf("\r\n");
for (int j=0; j<4; j++)
{ printf(" %d", a[j]);
}

}

return 0;
}

Дополнен

Этот сайт скобки квадратные плохо воспринимает, там на самом деле написано
a (i) (j) = a (j) (i). Только скобки квадратные. Это и есть транспонирование по определению.

По дате
По рейтингу
Аватар пользователя
Новичок
14лет

А вы прогонять в уме эту программу пробовали? Попробуйте, увидите ошибку.

#include <stdio.h>

int main()
{
int matrix[4][4] = {{1,7,3,6}, {8,5,3,12}, {5,11,78,16}, {13,41,2,78}};
int result[4][4];
int i;
int j;

// транспонирование.

for (i = 0; i < 4; i++)

for (j = 0; j < 4; j++)

result[ i ][ j ] = matrix[ j ][ i ];

// вывод.

for (i = 0; i < 4; i++) {

for (j = 0; j < 4; j++)

printf("\%\4d", result[ i ][ j ]); // уберите обратные слеши.

putchar('\n');
}

return 0;
}

Аватар пользователя
Знаток
14лет

начнем с того, что где 2 цикла, у вас стоит a[j]=a[j]; тоесть вы матрицу исходную переписываете исходной же :)