Qualcomm Interview Question
Software Engineer / Developersvoid 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 September 20, 2009#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;
}
}
}