Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- void init_matrix(double*a, int m, int n);
- double f(int i, int j);
- int solve(int*a, int m, int n);
- int read_matrix (const char *filename, int *a, int m, int n);
- void print_matrix(const char *filename, int*a, int m, int n);
- int solve(int*a, int m, int n)
- {
- int J = -1;
- int i = 0, j = 0, k = 0, bias = 0;
- double sum, f = 0;
- for(int j = 0; j < n; j++)
- {
- for(int i = 0; i < m; i++)
- {
- f += a[i*n+j];
- }
- }
- f /= (m*n);
- for(int j = 0; j < n; j++)
- {
- for(int i = 0; i < m; i++)
- {
- printf("a[k] = %d\n", a[i*n+j]);
- if(a[i*n+j] == f)
- {
- J = j;
- break;
- }
- }
- if(J >= 0) break;
- }
- if(J >= 0)
- {
- for(k = 0; k < (m*(n - 1)); k++)
- {
- printf("a[k] = %d\n", a[k]);
- if((k + bias) %n ==J) bias++;
- a[k] = a[k+bias];
- }
- }
- return J;
- }
- int read_matrix (const char *filename, int *a, int m, int n)
- {
- FILE *fp;
- int i, j;
- if (!(fp = fopen (filename, "r")))
- {
- return -1;
- }
- for (i = 0; i < m; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (fscanf (fp, "%d", a + i * n + j) != 1)
- {
- fclose (fp);
- return -2;
- }
- }
- }
- fclose (fp);
- return 0;
- }
- void print_matrix(const char *filename, int*a, int m, int n)
- {
- FILE *fp;
- int i, j;
- fp = fopen (filename, "w");
- for(i=0; i<m; i++)
- {
- for(j=0; j<n; j++) fprintf(fp, "%d ", a[i*n+j]);
- fprintf(fp, "\n");
- }
- fclose(fp);
- }
- int main(int argc, const char* argv[])
- {
- int*a;
- int n,m, read, res;
- const char*filename;
- const char*filename2;
- if(argc!=5)
- {
- printf("\n\nARGS ERR\n\n");
- return -1;
- }
- if(!(n = atoi(argv[2])))
- {
- printf("\n\nN ERR\n\n");
- return -2;
- }
- if(!(m = atoi(argv[1])))
- {
- printf("\n\nM ERR\n\n");
- return -3;
- }
- if(!(a = (int*)malloc(m*n*(sizeof(double)))))
- {
- printf("\n\nN ERR\n\n");
- return -4;
- }
- filename = argv[3];
- filename2 = argv[4];
- read = read_matrix(filename, a, m, n);
- if(read<0)
- {
- switch(read)
- {
- case -1:
- printf("\n\nERR OPEN\n\n");
- break;
- case -2:
- printf("\n\nERR READ\n\n");
- break;
- default:
- printf("\n\nUnknown err\n\n");
- }
- }
- else
- {
- res = solve(a,m,n);
- if(res >= 0) print_matrix(filename2, a, m, n-1);
- else print_matrix(filename2, a, m, n);
- }
- free(a);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement