## Qualcomm Interview Question Software Engineer / Developers

- 0of 0 votes
Write a function to transpose a NxN matrix. Do it in-place. e.g. m={{1,2,3},{4,5,6},{7,8,9}} ==> m={1,4,7},{2,5,8}{3,6,9}}. Function prototype is like this "transpose(dimension, pointer to 2-d array)".

void transposeMatrix(int **myArray, int N){

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

for(j = i + 1;j<N;j++){

myArray[i][j] = myArray[i][j] ^ myArray[j][i];

myArray[j][i] = myArray[i][j] ^ myArray[j][i];

myArray[i][j] = myArray[i][j] ^ myArray[j][i];

}

}

}

#include <stdio.h>

int main(int argc, char *argv[])

{

int a[4][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13, 14, 15, 16}};

int i, j, temp;

int dim = 4;

for (i=0; i<dim-1; i++)

{

for (j=i; j<dim; j++)

{

temp = a[i][j];

a[i][j] = a[j][i];

a[j][i] = temp;

}

}

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

{

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

{

printf("%d", a[i][j]);

}

printf("\n");

}

return 0;

}

http://en.wikipedia.org/wiki/In-place_matrix_transposition

- kichi on September 20, 2009 Edit | Flag Reply#define DIM_MATRIX 10

int m[DIM_MATRIX][DIM_MATRIX];

// void Transpose(int dim, int m[][]) // error C2087: 'm' : missing subscript

// void Transpose(int dim, int (*m)[]) // error C2036: 'int (*)[]' : unknown size

void Transpose(int dim, int *m)

{

for (int row = 1; row<dim; row++)

{

for (int col=0; col<row; col++)

{

int t = m[col*dim+row];

m[col*dim+row] = m[row*dim+col];

m[row*dim+col] = t;

}

}

}