Val_Kir

lab 5

Jun 20th, 2016
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.70 KB | None | 0 0
  1. /* Поменять местами строки с минимальными и
  2.    максимальными суммами элементов*/
  3.  
  4.  
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <time.h>
  8.  
  9. int summ(int m[],int n) //функция подсчета суммы в строке
  10. {
  11.     int res=0;
  12.     for(int i=0; i<n;++i)
  13.         res+=m[i];
  14.     return res;
  15. }
  16.  
  17. void main(void)
  18. {
  19.     int max, min, imin, imax, **M, m, n, k=0, *b;
  20.    
  21.     srand(time(0));
  22.     printf("\n Enter m: ");
  23.     scanf("%d", &m); //кол-во строк
  24.     n=m; //кол-во элементов= кол-во строк (квадратная матрица)
  25.  
  26.     //выделение участка памяти
  27.     M=new int *[m];
  28.     if(!M) {printf("\n Not enough memory"); return;}
  29.     for(int i=0;i<n;++i)
  30.     {
  31.         M[i]=new int[n];
  32.         if(!M[i]) {printf("\n Not enough memory"); return;}
  33.     }
  34.  
  35.     //заполнение матрицы и подсчет суммы в строках
  36.     for(int i=0;i<n;++i)
  37.     {
  38.         for(int j=0;j<n;++j)
  39.         {
  40.             M[i][j]=rand()%10;
  41.             printf("%d ",M[i][j]);
  42.            
  43.         }
  44.         printf("| %d", summ(M[i],n));
  45.         putchar('\n');
  46.     }
  47.    
  48.     imax=imin=0;
  49.     min=max=summ(M[0],n);
  50.     //поиск минимальной и максимальной строк
  51.     for(int i=1; i<n; i++)
  52.     {
  53.         k=summ(M[i],n);
  54.         if(k<min)
  55.         {
  56.             min=k;
  57.             imin=i;
  58.         }
  59.         if(k>max)
  60.         {
  61.             max=k;
  62.             imax=i;
  63.         }
  64.     }
  65.  
  66.     //меняем местами
  67.     b=M[imax];
  68.     M[imax]=M[imin];
  69.     M[imin]=b;
  70.     putchar('\n');
  71.  
  72.     //вывод новой матрицы и освобождение участка памяти
  73.     for(int i=0;i<n;++i)
  74.     {
  75.         for(int j=0; j<n; ++j)
  76.             printf("%d ",M[i][j]);
  77.         printf("| %d", summ(M[i],n));
  78.         putchar('\n');
  79.         delete []M[i];
  80.     }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment