yukisaw

2D array sort by lines

Nov 9th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <iostream>
  3.  
  4. //#define _OTHER_VARIANT
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     int M = 10;
  11.     int N = 8;
  12.  
  13.     int **array = new int*[M];
  14.     for (int y = 0; y < M; ++y)
  15.     {
  16.         array[y] = new int[N];
  17.         for (int x = 0; x < N; ++x)
  18.         {
  19.            array[y][x] = rand() % 1000 - rand() % 1000;
  20.         }
  21.     }
  22.     //Сортировка всеми любимым пузырьком:
  23.     for (int i = 0; i < M - 1; ++i)
  24.     for (int a = 0; a < M - i - 1; ++a)
  25.     {
  26.         int sum_cur = 0, sum_next = 0;
  27.         for (int x = 0; x < N; ++x)
  28.         {
  29.             sum_cur += array[a][x];
  30.             sum_next+= array[a+1][x];
  31.         }
  32.  
  33.         if (sum_cur > sum_next)
  34.         {
  35. #ifndef _OTHER_VARIANT
  36.             int* buffer = array[a];
  37.             array[a] =  array[a+1];
  38.             array[a+1] = buffer;
  39. #else
  40.             for (int x = 0; x < N; ++x)
  41.             {
  42.                 int buffer = array[a][x];
  43.                 array[a][x]   = array[a+1][x];
  44.                 array[a+1][x] = buffer;
  45.             }
  46. #endif
  47.         }
  48.     }
  49.     //Выводим весь этот хлам:
  50.     for (int y = 0; y < M; ++y)
  51.     {
  52.         int sum = 0;
  53.         printf("%2d : |", y);
  54.         for (int x = 0; x < N; ++x)
  55.         {
  56.              printf("%5d | ", array[y][x]);
  57.              sum += array[y][x];
  58.         }
  59.         printf(" = %5d\n", sum);
  60.         cout << "------";
  61.         for (int i = 0; i < N; ++i) cout << "--------";
  62.         cout<<"--------\n";
  63.         delete [] array[y];
  64.     }
  65.     delete [] array;
  66.     cin.get();
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment