Найти произведение ненулевых элементов массива, находящихся на позициях, кратных числу 3 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан массив из 18 вещественных чисел, все элементы которого различны. 1) Найти произведение (ненулевых) элементов массива, находящихся на позициях, кратных числу 3. 2) Найти квадраты всех чисел, расположенных между минимальным и максимальным значениями. 3) Упорядочить по возрастанию элементы, находящиеся на местах, не кратных числу 3.

Решение задачи: «Найти произведение ненулевых элементов массива, находящихся на позициях, кратных числу 3»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define SIZE 18
  3.  
  4. void search(int [], int);
  5. void MaxMin(int [], int);
  6. void increase(int [], int);
  7.  
  8. main()
  9. {
  10.     int arr[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
  11.  
  12.     void search(arr, SIZE);
  13.     void MaxMin(arr, SIZE);
  14.     void increase(arr, SIZE);
  15.  
  16. }
  17.  
  18. void search(int a[], int size) //произведение на позициях кратных трем
  19. {
  20.     int f1 = 1;
  21.  
  22.     for (int i = 0; i < size; i++)
  23.     {
  24.         if (i % 3 == 0)
  25.             f1 *= a[i]
  26.     }
  27. }
  28.  
  29. void MaxMin(int a[], int size) //нахождение квадратов
  30. {
  31.     int max = a[0], min = a[0];
  32.     int A[size]; //в этом массиве будут храниться все квадраты нужных нам чисел
  33.  
  34.     for (int i = 0; i < size; i++)
  35.     {
  36.         if (max < a[i]) max = i;
  37.         if (min > a[i]) min = i;
  38.     }
  39.  
  40.     int begin = min < max ? min : max;
  41.     int end = min > max ? min : max;
  42.  
  43.     for (int i = 0; begin <= end; begin++)
  44.     {
  45.         A[i] = a[begin] * a[begin];
  46.         i++;
  47.     }
  48. }
  49.  
  50. void increase(int a[], int size)  //сортировка по возрастанию всех элементов не кратных трем
  51. {
  52.     int hold;
  53.  
  54.     for (int i = 0; i < size; i++)
  55.         for (int j = 0; j < size; j++)
  56.             if (i % 3 != 0 && a[i] > a[i + 1])
  57.             {
  58.                 hold = a[i];
  59.                 a[i] = a[i + 1];
  60.                 a[i + 1] = hold;
  61.             }  
  62. }

Объяснение кода листинга программы

  1. В функции main() мы объявляем массив arr[SIZE] размером 18 и инициализируем его нулями.
  2. В функции search(int a[], int size) мы объявляем переменную f1 равной 1. Эта переменная будет использоваться для хранения произведения ненулевых элементов на позициях, кратных трём.
  3. В функции MaxMin(int a[], int size) мы объявляем переменные max и min равными a[0]. Эти переменные используются для хранения текущего максимального и минимального элемента.
  4. Мы создаем новый массив A[size], в котором будут храниться квадраты выбранных элементов.
  5. В функции increase(int a[], int size) мы объявляем переменную hold равной a[i]. Эта переменная используется для временного хранения элемента при его перестановке.
  6. Мы сортируем элементы массива a[], которые не кратны трём, по возрастанию.
  7. В функции search(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент находится на позиции, кратной трём, то мы умножаем его на f1.
  8. В конце функции search(int a[], int size) мы выводим значение переменной f1, которое и является искомым произведением.
  9. В функции MaxMin(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент меньше max, то мы обновляем max. Аналогично, если текущий элемент больше min, то мы обновляем min.
  10. Мы находим минимальное и максимальное значение в массиве a[] и сохраняем их в переменных min и max.
  11. Мы создаем новый массив A[size], в котором будут храниться квадраты выбранных элементов.
  12. Мы проходим по всем элементам массива a[], начиная с min и до max (включительно), и если текущий элемент не кратен трём, то мы добавляем его в массив A[]**, возведя в квадрат.
  13. В функции increase(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент не кратен трём и больше следующего элемента, то мы меняем их местами с помощью переменной hold.
  14. Мы сортируем элементы массива a[], которые не кратны трём, по возрастанию.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы