Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib> // Для работы qsort
  3.  
  4. using namespace std;
  5.  
  6. int **createMatrix(int a, int b) // Функция создания многомерного массива с заданным кол-вом строк и столбцов
  7. {
  8.  int **matrix = new int *[a];
  9.  for (int i = 0; i < a; i++)
  10.     matrix[i] = new int[b];
  11.  return matrix;
  12. }
  13.  
  14. int compare(const void * x1, const void * x2)   // Функция сравнения элементов массива
  15. {
  16.   return ( *(int*)x1 - *(int*)x2 );  // Если результат вычитания равен 0, то числа равны, < 0: x1 < x2; > 0: x1 > x2
  17. }
  18.  
  19. int main()
  20. {
  21.  int n;
  22.  int maxsum = 0;
  23.  int minsum = 0;
  24.  cout << "Enter the number of pairs: ";
  25.  cin >> n;
  26.  /*int *A = new int [n]; // Способ через 2 одномерных массива
  27.  int *B = new int [n];
  28.    
  29.  for (int i = 0; i < n; i++)
  30.         {
  31.         cout << "A[" << i + 1 << "]: ";
  32.         cin >> A[i];
  33.         }
  34.    
  35.  for (int i = 0; i < n; i++)
  36.         {
  37.         cout << "B[" << i + 1 << "]: ";
  38.         cin >> B[i];
  39.         }
  40.  
  41.  for (int i = 0; i < n; i++) // Вывод неотсортированного массива 1
  42.     {
  43.     cout << A[i] << ' ';  
  44.     }
  45.  
  46.  for (int i = 0; i < n; i++) // Вывод неотсортированного массива 2
  47.     {
  48.     cout << B[i] << ' ';  
  49.     }
  50.  qsort(A, n, sizeof(int), compare); // Сортировка
  51.  qsort(B, n, sizeof(int), compare);
  52.  cout << "\n" << "___________________________" << "\n";
  53.  
  54.  for (int i = 0; i < n; i++) // Вывод отсортированного массива 1
  55.     {
  56.     cout << A[i] << ' ';  
  57.     }
  58.  
  59. cout << "\n";
  60.  
  61.  for (int i = 0; i < n; i++) // Вывод отсортированного массива 2
  62.     {
  63.     cout << B[i] << ' ';  
  64.     }
  65.  
  66.     for (int j = 0; j < n; j++) // Условие расчёта максимальной суммы
  67.      maxsum += A[j] * B[j];
  68.  
  69.  cout << "\n" << "Max sum: " << maxsum << "\n";
  70.  
  71.  for (int j = n-1; j >= (n-1)/2; j--) // Условие расчёта минимальной суммы
  72.     {
  73.      if (j != n-1-j)
  74.      minsum += (A[j] * B[n-1-j]) + (A[n-1-j] * B[j]);
  75.      else minsum += (A[j] * B[n-1-j]);
  76.      if (j == n-j) break;
  77.  }
  78.  
  79.  cout << "Min sum: " << minsum << "\n" ;
  80.     */
  81.  int **matrix = createMatrix(2,n); // Способ через один двумерный массив
  82.  for (int i = 0; i < 2; i++)
  83.     for (int j = 0; j < n; j++)
  84.     {
  85.         cout << "A[" << i + 1 << "][" << j+1 << "] : ";
  86.         cin >> matrix[i][j];
  87.     }
  88.  
  89.  for (int i = 0; i < 2; i++) // Вывод неотсортированной матрицы
  90.         {
  91.         cout << "\n";
  92.         for (int j = 0; j < n; j++)
  93.             cout << matrix[i][j] << ' ';  
  94.         }
  95.  
  96.  for (int i = 0; i < 2; i++)        // Сортировка
  97.     qsort(matrix[i], n, sizeof(int), compare);
  98.            
  99.  
  100.  cout << "\n" << "___________________________" << "\n";
  101.  
  102.  for (int i = 0; i < 2; i++) // Вывод отсортированной матрицы
  103.         {
  104.         cout << "\n";
  105.         for (int j = 0; j < n; j++)
  106.                         cout << matrix[i][j] << ' ';  
  107.         }
  108.  for (int j = 0; j < n; j++) // Условие расчёта максимальной суммы
  109.      maxsum += matrix[0][j] * matrix[1][j];
  110.  
  111.  cout << "\n" << "Max sum: " << maxsum << "\n";
  112.  
  113.  for (int j = n-1; j >= (n-1)/2; j--) // Условие расчёта минимальной суммы
  114.     {
  115.      if (j != n-1-j)
  116.      minsum += (matrix[0][j] * matrix[1][n-1-j]) + (matrix[0][n-1-j] * matrix[1][j]);
  117.      else minsum += (matrix[0][j] * matrix[1][n-1-j]);
  118.      if (j == n-j) break;
  119.  }
  120.  
  121.  cout << "Min sum: " << minsum << "\n" ;
  122.  
  123.  
  124.  system("PAUSE");
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement