Advertisement
VictoriaLodochkina

lab10 teper tochno vse

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