Advertisement
VictoriaLodochkina

lab 10 (2.1) all

Feb 11th, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.96 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. void kratno(double** mas1, int x1, int y1, double** mas2, int x2, int y2);
  12. void nekratno(double** mas1, int x1, int y1, double** mas2, int x2, int y2);
  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.             double sumA = 0;
  65.             double sumB = 0;
  66.             for (int i = 0; i < n1; i++)
  67.                 for (int j = 0; j < m1; j++)
  68.                     sumA += A[i][j];
  69.             for (int i = 0; i < n2; i++)
  70.                 for (int j = 0; j < m2; j++)
  71.                     sumB += B[i][j];
  72.             double p;
  73.             double rez = modf(sumA / sumB, &p);
  74.             if (rez == 0)
  75.             {
  76.                 kratno(A, n1, m1, B, n2, m2);
  77.             }
  78.             else
  79.             {
  80.                 nekratno(A, n1, m1, B, n2, m2);
  81.             }
  82.             for (int i = 0; i < n1; i++)
  83.             {
  84.                 cout << endl;
  85.                 for (int j = 0; j < m1; j++)
  86.                     cout << A[i][j] << " ";
  87.             }
  88.             for (int i = 0; i < 3; i++)
  89.             {
  90.                 cout << endl;
  91.             }
  92.             for (int i = 0; i < n2; i++)
  93.             {
  94.                 cout << endl;
  95.                 for (int j = 0; j < m2; j++)
  96.                     cout << B[i][j] << " ";
  97.             }
  98.             break;
  99.         }
  100.         default: {cout << "Нет такой задачи.\n"; } break;
  101.         }
  102.         cout << "Если вы хотите выйти, нажмите \'y\', в противном случае-любую другую клавишу" << endl;
  103.         cin.ignore(100, '\n');
  104.         cin >> ex;
  105.     } while (ex != 'y');
  106.     return 0;
  107. }
  108.  
  109. void sortmas(int k, int l, double* mas1, int s)
  110. {
  111.     int b = 0;
  112.     for (int i = k; i <= l - 3; i++)
  113.     {
  114.         for (int j = k + 1; j <= l - 2 - b; j++)
  115.             if (mas1[j] < mas1[j + 1])
  116.             {
  117.                 int t = mas1[j];
  118.                 mas1[j] = mas1[j + 1];
  119.                 mas1[j + 1] = t;
  120.             }
  121.         b++;
  122.     }
  123.     for (int i = 0; i < s; i++)
  124.     {
  125.         cout << mas1[i] << " ";
  126.     }
  127. }
  128.  
  129. int imin(int s, double* mas1)
  130. {
  131.     int minx = -1;
  132.     double min = mas1[0];
  133.     for (int i = 0; i < s; i++)
  134.     {
  135.         if (fabs(mas1[i]) <= min)
  136.         {
  137.             min = mas1[i];
  138.             minx = i;
  139.         }
  140.     }
  141.     return minx;
  142. }
  143.  
  144. int imax(int s, double* mas1)
  145. {
  146.     int maxx = -1;
  147.     double max = mas1[0];
  148.     for (int i = 0; i < s; i++)
  149.     {
  150.         if (fabs(mas1[i]) >= max)
  151.         {
  152.             max = mas1[i];
  153.             maxx = i;
  154.         }
  155.     }
  156.     return maxx;
  157. }
  158.  
  159.  
  160.  
  161. void kratno(double** mas1, int x1, int y1, double** mas2, int x2, int y2)
  162. {
  163.     double temp1, temp2;
  164.     for (int i = 0; i < y1; i++)
  165.     {
  166.         temp1 = mas1[0][i];
  167.         mas1[0][i] = mas1[x1 - 1][i];
  168.         mas1[x1 - 1][i] = temp1;
  169.     }
  170.     for (int i = 0; i < y2; i++)
  171.     {
  172.         temp2 = mas2[0][i];
  173.         mas2[0][i] = mas2[x2 - 1][i];
  174.         mas2[x2 - 1][i] = temp2;
  175.     }
  176. }
  177.  
  178. void nekratno(double** mas1, int x1, int y1, double** mas2, int x2, int y2)
  179. {
  180.     double temp1, temp2;
  181.     for (int i = 0; i < y1; i++)
  182.     {
  183.         temp1 = mas1[1][i];
  184.         mas1[1][i] = mas1[x1 - 2][i];
  185.         mas1[x1 - 2][i] = temp1;
  186.     }
  187.     for (int i = 0; i < y2; i++)
  188.     {
  189.         temp2 = mas2[1][i];
  190.         mas2[1][i] = mas2[x2 - 2][i];
  191.         mas2[x2 - 2][i] = temp2;
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement