Expand|Select|Wrap|Line Numbers
- #include<stdio.h>
- #include<stdlib.h>
- int **transpose(int **x,int m,int n);
- main()
- {
- int nrows=2,ncolumns=2,i,j,k=0;
- //memory allocation for array x
- int **array;
- array = malloc(nrows * sizeof(int *));
- if(array == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- for(i = 0; i < nrows; i++)
- {
- array[i] = malloc(ncolumns * sizeof(int));
- if(array[i] == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- }
- //define x
- printf("x=\n");
- for(i=0;i<2;i++)
- {
- printf("\n");
- for(j=0;j<2;j++)
- {
- k=k+5;
- array[i][j]=i+j+k;
- printf("%d\t",array[i][j]);
- }
- }
- printf("\n");
- //memory allocation for x_transpose, (storing the transpose returned by function)
- int **x_transpose;
- x_transpose = malloc(nrows * sizeof(int *));
- if(x_transpose == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- for(i = 0; i < nrows; i++)
- {
- x_transpose[i] = malloc(ncolumns * sizeof(int));
- if(x_transpose[i] == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- }
- //call function
- x_transpose= transpose(array,nrows,ncolumns);
- //display transpose
- printf("x_transpose=\n");
- for(i=0;i<2;i++)
- {
- printf("\n");
- for(j=0;j<2;j++)
- {
- printf("%d\t",x_transpose[i][j]);
- }
- }
- }
- //function_transpose
- int **transpose(int **x,int m,int n)
- {
- int nrows=n,ncolumns=m,i,j;
- //memory allocation for y,to store transpose
- int **y;
- y = malloc(nrows * sizeof(int *));
- if(y == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- for(i = 0; i < nrows; i++)
- {
- y[i] = malloc(ncolumns * sizeof(int));
- if(y[i] == NULL)
- {
- printf("out of memory\n");
- return 0;
- }
- }
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- {
- y[i][j]=x[j][i];
- }
- return y;
- }