Advertisement
Ansaid

Laba_2 (Указатель на функцию)

Apr 1st, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. /*Если сумма массива равна первому элементу в массиве, то инвертируем, если больше, то по возрастанию, если меньше, то по убыванию*/
  2. #include "pch.h"
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void(*menu(int *array, int size))(int*, int);
  8. void inverse(int* array, int size);
  9. void increase(int* array, int size);
  10. void decrease(int* array, int size);
  11.  
  12. int main()
  13. {
  14.     setlocale(LC_ALL, "Russian");
  15.     int size;
  16.     cout << "Введите кол-во элементов в массиве: ";
  17.     cin >> size;
  18.     int *array = new int[size];
  19.     for (int i = 0; i < size; i++)
  20.     {
  21.         array[i] = rand() % 21 - 10;
  22.         cout << array[i] << "\t";
  23.     }
  24.     void(*pointer) (int*, int) = menu(array, size);
  25.     pointer(array, size);
  26. }
  27.  
  28. void (*menu(int *array, int size))(int*, int)
  29. {
  30.     int sum = array[0];
  31.     for (int i = 1; i < size; i++)
  32.         sum = sum + array[i];
  33.     if (sum == array[0])
  34.         return &inverse;
  35.     if (sum > array[0])
  36.         return &increase;
  37.     if (sum < array[0])
  38.         return &decrease;
  39. }
  40.  
  41. void inverse(int *array, int size)
  42. {
  43.  
  44.     cout << "\nИнвертированный массив:\n";
  45.     int t;
  46.     for (int i = 0; i < size; i++)
  47.     {
  48.         if (i != size / 2)
  49.         {
  50.             t = array[i];
  51.             array[i] = array[size - i - 1];
  52.             array[size - i - 1] = t;
  53.         }
  54.         cout << array[i] << "\t";
  55.     }
  56. }
  57.  
  58. void increase(int *array, int size)
  59. {
  60.     cout << "\nМассив в неубывающем порядке:\n";
  61.     int t;
  62.     for (int i = 0; i < size - 1; i++)
  63.     {
  64.         for (int j = i + 1; j < size; j++)
  65.         {
  66.             if (array[i] > array[j])
  67.             {
  68.                 t = array[j];
  69.                 array[j] = array[i];
  70.                 array[i] = t;
  71.             }
  72.         }
  73.     }
  74.     for (int i = 0; i < size; i++)
  75.     {
  76.         cout << array[i] << "\t";
  77.     }
  78.  
  79. }
  80.  
  81. void decrease(int *array, int size)
  82. {
  83.     cout << "\nМассив в невозрастающем порядке:\n";
  84.     int t;
  85.     for (int i = 0; i < size - 1; i++)
  86.     {
  87.         for (int j = i + 1; j < size; j++)
  88.         {
  89.             if (array[i] < array[j])
  90.             {
  91.                 t = array[j];
  92.                 array[j] = array[i];
  93.                 array[i] = t;
  94.             }
  95.         }
  96.     }
  97.     for (int i = 0; i < size; i++)
  98.     {
  99.         cout << array[i] << "\t";
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement