Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 16
- #define MAX_STR_LEN 64
- FILE * my_fopen(char *);
- void get_array(int [MAX][MAX], int *, int *);
- void put_array(int [][MAX], int, int);
- void transpose_array(int [][MAX], int *, int *);
- main()
- {
- int array[MAX][MAX], rows=0, columns;
- get_array(array, &rows, &columns);
- transpose_array(array, &rows, &columns);
- put_array(array, rows, columns);
- return 0;
- }
- FILE * my_fopen(char * mode){
- FILE * fp;
- char filename[MAX_STR_LEN];
- printf("Insert %s file name: ", (mode[0]=='r')?("input"):("output"));
- scanf("%s", filename);
- if((fp=fopen(filename, mode))==NULL)
- abort();
- return fp;
- }
- void get_array(int array[MAX][MAX], int * r, int * c){
- int i, j, temp;
- FILE * fp=my_fopen("r");
- fscanf(fp, "%d", c);
- while(feof(fp)==0)
- if(1==fscanf(fp, "%d", &temp))
- ++*r;
- *r/=*c;
- rewind(fp);
- fscanf(fp, "%d", &temp);
- for(i=0;i<*r;i++)
- for(j=0;j<*c;j++)
- fscanf(fp, "%d", &array[i][j]);
- fclose(fp);
- }
- void transpose_array(int array[][MAX], int * m, int * n)
- {
- int i, j;
- *m^=*n^=*m^=*n;
- for(i=0;i<*m;i++)
- for(j=i+1;j<*n;j++)
- array[i][j]^=array[j][i]^=array[i][j]^=array[j][i];
- }
- void put_array(int array[][MAX], int r, int c){
- int i, j;
- FILE * fp=my_fopen("w");
- for(i=0;i<r;i++)
- for(j=0;j<c;j++)
- fprintf(fp, "%d%c", array[i][j], (j==c-1)?('\n'):('\t'));
- fclose(fp);
- }
Advertisement
Add Comment
Please, Sign In to add comment