Advertisement
VictoriaLodochkina

lab 10 PERFECT ALL

Feb 13th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.75 KB | None | 0 0
  1. #include <iostream>
  2. #define _USE_MATH_DEFINES
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. void sortmas(int k, int l, double* mas1, int s);
  8. int imin(int s, double* mas1);
  9. int imax(int s, double* mas1);
  10.  
  11. int kratsumm(double** mas1, int x1, int y1, double** mas2, int x2, int y2);
  12. void sort(double** mas1, int x1, int y1, double** mas2, int x2, int y2, int ost);
  13.  
  14. int main()
  15. {
  16.     setlocale(LC_ALL, "Russian");
  17.     long n;
  18.     char ex = 'n';
  19.     do {
  20.         cout << "Введите номер задания: " << endl;
  21.         char task;
  22.         cin >> task;
  23.         switch (task)
  24.         {
  25.         case '1': {
  26.             int n;
  27.             cout << "Enter n: " << endl;
  28.             cin >> n;
  29.             double* mas = new double[n];
  30.             cout << "Enter mas: " << endl;
  31.             for (int i = 0; i < n; i++)
  32.             {
  33.                 cin >> mas[i];
  34.             }
  35.             double max = mas[0];
  36.             double min = mas[0];
  37.             int low, high;
  38.             low = imin(n, mas);
  39.             high = imax(n, mas);
  40.             sortmas(low, high, mas, n);
  41.             break;
  42.         }
  43.         case '2': {
  44.             int n1, m1;
  45.             cout << "Enter n1 and m1: " << endl;
  46.             cin >> n1 >> m1;
  47.             cout << "Enter mas A: " << endl;
  48.             double** A = new double* [n1];
  49.             for (int i = 0; i < n1; i++)
  50.                 A[i] = new double[m1];
  51.             for (int i = 0; i < n1; i++)
  52.                 for (int j = 0; j < m1; j++)
  53.                     cin >> A[i][j];
  54.             int n2, m2;
  55.             cout << "Enter n2 and m2: " << endl;
  56.             cin >> n2 >> m2;
  57.             cout << "Enter mas B: " << endl;
  58.             double** B = new double* [n2];
  59.             for (int i = 0; i < n2; i++)
  60.                 B[i] = new double[m2];
  61.             for (int i = 0; i < n2; i++)
  62.                 for (int j = 0; j < m2; j++)
  63.                     cin >> B[i][j];
  64.             int kratnost=kratsumm(A, n1, m1, B, n2, m2);
  65.             sort(A, n1, m1, B, n2, m2, kratnost);
  66.             break;
  67.         }
  68.         default: {cout << "Нет такой задачи.\n"; } break;
  69.         }
  70.         cout << "Если вы хотите выйти, нажмите \'y\', в противном случае-любую другую клавишу" << endl;
  71.         cin.ignore(100, '\n');
  72.         cin >> ex;
  73.     } while (ex != 'y');
  74.     return 0;
  75. }
  76.  
  77. void sortmas(int k, int l, double* mas1, int s)
  78. {
  79.     int b = 0;
  80.     for (int i = k; i <= l - 3; i++)
  81.     {
  82.         for (int j = k + 1; j <= l - 2 - b; j++)
  83.             if (mas1[j] < mas1[j + 1])
  84.             {
  85.                 int t = mas1[j];
  86.                 mas1[j] = mas1[j + 1];
  87.                 mas1[j + 1] = t;
  88.             }
  89.         b++;
  90.     }
  91.     for (int i = 0; i < s; i++)
  92.     {
  93.         cout << mas1[i] << " ";
  94.     }
  95. }
  96.  
  97. int imin(int s, double* mas1)
  98. {
  99.     int minx = -1;
  100.     double min = mas1[0];
  101.     for (int i = 0; i < s; i++)
  102.     {
  103.         if (fabs(mas1[i]) <= min)
  104.         {
  105.             min = mas1[i];
  106.             minx = i;
  107.         }
  108.     }
  109.     return minx;
  110. }
  111.  
  112. int imax(int s, double* mas1)
  113. {
  114.     int maxx = -1;
  115.     double max = mas1[0];
  116.     for (int i = 0; i < s; i++)
  117.     {
  118.         if (fabs(mas1[i]) >= max)
  119.         {
  120.             max = mas1[i];
  121.             maxx = i;
  122.         }
  123.     }
  124.     return maxx;
  125. }
  126.  
  127.  
  128. int kratsumm(double** mas1, int x1, int y1, double** mas2, int x2, int y2)
  129. {
  130.     double sumA = 0;
  131.     double sumB = 0;
  132.     for (int i = 0; i < x1; i++)
  133.         for (int j = 0; j < y1; j++)
  134.             sumA += mas1[i][j];
  135.     for (int i = 0; i < x2; i++)
  136.         for (int j = 0; j < y2; j++)
  137.             sumB += mas2[i][j];
  138.     double p;
  139.     int ptr;
  140.     double rez = modf(sumA / sumB, &p);
  141.     if (rez == 0)
  142.     {
  143.         ptr = 0;
  144.     }
  145.     else
  146.     {
  147.         ptr = 1;
  148.     }
  149.     return ptr;
  150. }
  151.  
  152. void sort(double** mas1, int x1, int y1, double** mas2, int x2, int y2, int ost)
  153. {
  154.     double temp1, temp2;
  155.     for (int i = 0; i < y1; i++)
  156.     {
  157.         temp1 = mas1[ost][i];
  158.         mas1[ost][i] = mas1[x1 - 1-ost][i];
  159.         mas1[x1 - 1-ost][i] = temp1;
  160.     }
  161.     for (int i = 0; i < y2; i++)
  162.     {
  163.         temp2 = mas2[ost][i];
  164.         mas2[ost][i] = mas2[x2 - 1-ost][i];
  165.         mas2[x2 - 1-ost][i] = temp2;
  166.     }
  167.     for (int i = 0; i < x1; i++)
  168.     {
  169.         cout << endl;
  170.         for (int j = 0; j < y1; j++)
  171.             cout << mas1[i][j] << " ";
  172.     }
  173.     for (int i = 0; i < 2; i++)
  174.     {
  175.         cout << endl;
  176.     }
  177.     for (int i = 0; i < x2; i++)
  178.     {
  179.         cout << endl;
  180.         for (int j = 0; j < y2; j++)
  181.             cout << mas2[i][j] << " ";
  182.     }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement