На с++ транспонирование матрицы...
Написал прогу, но матрица меняется, но не транспонируется, в чём дело? Вот код
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). Только скобки квадратные. Это и есть транспонирование по определению.
А вы прогонять в уме эту программу пробовали? Попробуйте, увидите ошибку.
#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;
}
начнем с того, что где 2 цикла, у вас стоит a[j]=a[j]; тоесть вы матрицу исходную переписываете исходной же :)