Advertisement
Guest User

Untitled

a guest
May 26th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. double myabs(double x)
  6. {
  7.     if (x < 0)
  8.          return -x;
  9.     return x;
  10. }
  11.  
  12. int main(void)
  13. {
  14.     FILE *fp, *outfp;
  15.     int n, m;
  16.     double *a;
  17.  
  18.     if(!(fp = fopen("input.txt","r")))
  19.     {
  20.         return -1;
  21.     }
  22.  
  23.     if(!(outfp = fopen("output.txt","w")))
  24.     {
  25.         return -1;
  26.     }
  27.     if (fscanf(fp, "%d%d", &n, &m) != 2)
  28.     {
  29.         return -1;
  30.     }
  31.  
  32.     a = (double*) malloc(n * m * sizeof(double));
  33.     if (a == NULL)
  34.     {
  35.         return -1;
  36.     }
  37.  
  38.     for (int i = 0; i < n; i++)
  39.     {
  40.         for (int j = 0; j < m; j++)
  41.         {
  42.             if (fscanf(fp, "%lf", &a[i*m + j]) != 1)
  43.             {
  44.                 return -1;
  45.             }
  46.         }
  47.     }
  48.  
  49.     for (int t = 0; t < m; t++)
  50.     {
  51.         for (int j = m - 1; j > t; j--)
  52.         {
  53.             double sumj = 0;
  54.             for (int i = 0 ; i < n; i++)
  55.             {
  56.                 sumj += myabs(a[i*m + j]);
  57.             }
  58.             double sumj_prev = 0;
  59.             for (int i = 0 ; i < n; i++)
  60.             {
  61.                 sumj_prev += myabs(a[i*m + j - 1]);
  62.             }
  63.             if (sumj > sumj_prev)
  64.             {
  65.                 continue;
  66.             }
  67.             for (int i = 0; i < n; i++)
  68.             {
  69.                 double temp = a[i*m + j];
  70.                 a[i*m + j] = a[i*m + j - 1];
  71.                 a[i*m + j - 1] = temp;
  72.             }
  73.         }
  74.     }
  75.  
  76.     for (int i = 0; i < n; i++)
  77.     {
  78.         for (int j = 0; j < m; j++)
  79.         {
  80.             fprintf(outfp, "%lf ", a[i*m + j]);
  81.         }
  82.         fprintf(outfp, "\n");
  83.     }
  84.     fprintf(outfp, "\n");
  85.  
  86.     for (int i = 0; i < n; i++)
  87.     {
  88.         double ans = 0;
  89.         for (int j = 0; j < m; j++)
  90.         {
  91.             ans += a[i*m + j]*a[0*m + j];
  92.         }
  93.         fprintf(outfp, "%lf\n", ans);
  94.     }
  95.  
  96.     fclose(outfp);
  97.     fclose(fp);
  98.     free(a);
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement