Advertisement
Dimique

lab9

Nov 27th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. typedef int elem;       //тип элемента массива
  4. typedef elem *arr;      //тип "указатель на elem"
  5.  
  6. void input_array(arr A, int size);
  7. int find_max(arr A, int size);
  8. int multiply(arr A, int size, int min, int &count);
  9.  
  10. int main() {
  11.     setlocale(0, "");
  12.     int size;                   //размер массива
  13.     int count = 0;
  14.     cout << " Укажите размер массива n: ";
  15.     cin >> size;                //ввод размера массива
  16.     arr A = new elem[size];     //выделение памяти под массив
  17.     input_array(A, size);       //ввод массива.
  18.     int imax = find_max(A, size);
  19.     cout << " Произведение положительных значений элементов массива, " << endl;
  20.     cout << " лежащих между элементом с индексом " << imax;
  21.     cout << " (с максимальным " << endl << " по абсолютной величине значением)";
  22.     cout << " и элементом " << endl << " с индексом " << size / 2;
  23.     cout << " (n/2), равно: " << multiply(A, size, imax, count) << endl;
  24.     cout << " Кол-во подходящих значений: " << count << endl;
  25.     delete[] A;                 //освобождение динамической памяти
  26.     system("pause");
  27.     return 0;
  28. }
  29. //ввод массива
  30. void input_array(arr A, int size) {
  31.     cout << " Введите элементы массива: ";
  32.     for (int i = 0; i < size; i++)
  33.         cin >> A[i];
  34. }
  35. //поиск индекса максимального по модулю значения
  36. int find_max(arr A, int size) {
  37.     int max = fabs(A[0]);
  38.     int imax = 0;
  39.     for (int i = 1; i < size; i++)
  40.         if (fabs(A[i]) > max) {
  41.             max = fabs(A[i]);
  42.             imax = i;
  43.         }
  44.     return imax;
  45. }
  46. //умножение подходящих значений
  47. int multiply(arr A, int size, int imax, int &count) {
  48.     int res = 1;
  49.     if (imax == size / 2)
  50.         return 0;
  51.     else if (imax < size / 2) {
  52.         for (int i = imax + 1; i < size / 2; i++)
  53.             if (A[i] > 0) {
  54.                 res *= A[i];
  55.                 count++;
  56.             }
  57.     }
  58.     else {
  59.         for (int i = imax - 1; i > size / 2; i--)
  60.             if (A[i] > 0) {
  61.                 res *= A[i];
  62.                 count++;
  63.             }
  64.     }
  65.     return res;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement