Advertisement
MargaritaOwl

Vector2

May 14th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale>
  3. using namespace std;
  4.  
  5.  
  6. void bubble(double *mas, int st, int n) // по возрастанию
  7. {
  8.     for (int i = n - 1; i >= st; i--)
  9.         for (int j = st; j<i; j++)
  10.             if (mas[j] > mas[j + 1])
  11.             {
  12.                 double tmp = mas[j];
  13.                 mas[j] = mas[j + 1];
  14.                 mas[j + 1] = tmp;
  15.             }
  16. }
  17.  
  18. void bubble_desc(double *mas, int n) //сортировка пузырьком по убыванию
  19. {
  20.     for (int i = n - 1; i >= 0; i--)
  21.         for (int j = 0; j<i; j++)
  22.             if (mas[j] < mas[j + 1])
  23.             {
  24.                 double tmp = mas[j];
  25.                 mas[j] = mas[j + 1];
  26.                 mas[j + 1] = tmp;
  27.             }
  28. }
  29.  
  30. void Shell_desc(double *mas, int n) //сортировка Шелла по убыванию
  31. {
  32.     int d, i, j;
  33.     d = n;//шаг
  34.     d = d / 2;
  35.     while (d>0)
  36.     {
  37.         for (i = 0; i< (n - d); i++)
  38.         {
  39.             j = i;
  40.             while (j >= 0 && fabs(mas[j])<fabs(mas[j + d]))
  41.             {
  42.                 double count = mas[j];
  43.                 mas[j] = mas[j + d];
  44.                 mas[j + d] = count;
  45.                 j--;
  46.             }
  47.         }
  48.         d = d / 2;
  49.     }
  50. }
  51.  
  52. void outarray(double *array, int size)
  53. {
  54.     for (int i = 0; i < size; i++)
  55.         cout << array[i] << " ";
  56.     cout << endl;
  57. }
  58.  
  59.  
  60. void input(double *array, int size, bool &falseinput)
  61. {
  62.     for (int i = 0; i < size; i++)
  63.     {
  64.         cin >> array[i];
  65.         if (!cin)
  66.         {
  67.             cout << "Вы ввели неправильное число." << endl;
  68.             falseinput = true;
  69.             break;
  70.         }
  71.     }
  72.     cout << endl;
  73. }
  74.  
  75.  
  76. void vectorC(double *arrayA, double *arrayB, int sizeA, int sizeB)
  77. {
  78.     const int size_const = 10000;
  79.     double arrayC[size_const];
  80.     int i, j;
  81.     for (i = 0, j = 0; (i < sizeA) || (i < sizeB); i++)
  82.     {
  83.         if (i < sizeA)
  84.         {
  85.             if ((int)arrayA[i] % 2 == 0)
  86.             {
  87.                 arrayC[j] = arrayA[i];
  88.                 j++;
  89.             }
  90.         }
  91.  
  92.         if (i < sizeB)
  93.         {
  94.             if ((int)arrayB[i] % 2 == 0)
  95.             {
  96.                 arrayC[j] = arrayB[i];
  97.                 j++;
  98.             }
  99.         }
  100.     }
  101.  
  102.     bubble_desc(arrayC, j);
  103.     int st = j;
  104.     for (i = 0; (i < sizeA) || (i < sizeB); i++)
  105.     {
  106.         if (i < sizeA)
  107.         {
  108.             if ((int)arrayA[i] % 2 != 0)
  109.             {
  110.                 arrayC[j] = arrayA[i];
  111.                 j++;
  112.             }
  113.         }
  114.  
  115.         if (i < sizeB)
  116.         {
  117.             if ((int)arrayB[i] % 2 != 0)
  118.             {
  119.                 arrayC[j] = arrayB[i];
  120.                 j++;
  121.             }
  122.         }
  123.     }
  124.  
  125.     bubble(arrayC, st, j);
  126.  
  127.     cout << "Задание №1: " << endl;
  128.     cout << "Вектор C :" << endl;
  129.     outarray(arrayC, j);
  130. }
  131.  
  132. void vectorA(double *array, int size)
  133. {
  134.     int min = 0, max = 0;
  135.  
  136.     for (int i = 1; i < size; i++)
  137.     {
  138.         if (fabs(array[i]) < fabs(array[min]))
  139.             min = i;
  140.  
  141.         if (fabs(array[i]) > fabs(array[max]))
  142.             max = i;
  143.     }
  144.  
  145.     if (min > max)
  146.     {
  147.         int tmp = min;
  148.         min = max;
  149.         max = tmp;
  150.     }
  151.  
  152.     double dob = 1;
  153.     min++;
  154.     while (min < max)
  155.     {
  156.         dob *= array[min];
  157.         min++;
  158.     }
  159.  
  160.     cout << "Задание №2:" << endl;
  161.     cout << "Произведение элементов вектора А (в промежутке) = " << dob << endl;
  162. }
  163.  
  164.  
  165. int main()
  166. {
  167.     setlocale(LC_ALL, "rus");
  168.  
  169.     const int size_const = 10000;
  170.  
  171.     double arrayA[size_const];
  172.     double arrayB[size_const];
  173.     int sizeA, sizeB;
  174.     bool falseinput = false;
  175.  
  176.     cin >> sizeA;
  177.     if (!cin)
  178.     {
  179.         cout << "Ввели неправильный размер первого вектора." << endl;
  180.         return 1;
  181.     }
  182.  
  183.     input(arrayA, sizeA, falseinput);
  184.  
  185.     cin >> sizeB;
  186.     if (!cin)
  187.     {
  188.         cout << "Ввели неправильный размер второго вектора." << endl;
  189.         return 1;
  190.     }
  191.  
  192.     input(arrayB, sizeB, falseinput);
  193.     if (falseinput)
  194.         return 1;
  195.  
  196.     cout << "Вектор А :" << endl;
  197.     outarray(arrayA, sizeA);
  198.     cout << "Вектор B :" << endl;
  199.     outarray(arrayB, sizeB);
  200.  
  201.     vectorC(arrayA, arrayB, sizeA, sizeB);
  202.  
  203.     vectorA(arrayA, sizeA);
  204.  
  205.     cout << "Задание №3:" << endl;
  206.     cout << "вектор А :" << endl;
  207.     Shell_desc(arrayA, sizeA);
  208.     outarray(arrayA, sizeA);
  209.     cout << "вектор B :" << endl;
  210.     Shell_desc(arrayB, sizeB);
  211.     outarray(arrayB, sizeB);
  212.  
  213.     system("pause");
  214.     return 0;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement