Найти произведение ненулевых элементов массива, находящихся на позициях, кратных числу 3 - C (СИ)
Формулировка задачи:
Дан массив из 18 вещественных чисел, все элементы которого различны.
1) Найти произведение (ненулевых) элементов массива, находящихся на позициях, кратных числу 3.
2) Найти квадраты всех чисел, расположенных между минимальным и максимальным значениями.
3) Упорядочить по возрастанию элементы, находящиеся на местах, не кратных числу 3.
Решение задачи: «Найти произведение ненулевых элементов массива, находящихся на позициях, кратных числу 3»
textual
Листинг программы
- #include <stdio.h>
- #define SIZE 18
- void search(int [], int);
- void MaxMin(int [], int);
- void increase(int [], int);
- main()
- {
- int arr[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
- void search(arr, SIZE);
- void MaxMin(arr, SIZE);
- void increase(arr, SIZE);
- }
- void search(int a[], int size) //произведение на позициях кратных трем
- {
- int f1 = 1;
- for (int i = 0; i < size; i++)
- {
- if (i % 3 == 0)
- f1 *= a[i]
- }
- }
- void MaxMin(int a[], int size) //нахождение квадратов
- {
- int max = a[0], min = a[0];
- int A[size]; //в этом массиве будут храниться все квадраты нужных нам чисел
- for (int i = 0; i < size; i++)
- {
- if (max < a[i]) max = i;
- if (min > a[i]) min = i;
- }
- int begin = min < max ? min : max;
- int end = min > max ? min : max;
- for (int i = 0; begin <= end; begin++)
- {
- A[i] = a[begin] * a[begin];
- i++;
- }
- }
- void increase(int a[], int size) //сортировка по возрастанию всех элементов не кратных трем
- {
- int hold;
- for (int i = 0; i < size; i++)
- for (int j = 0; j < size; j++)
- if (i % 3 != 0 && a[i] > a[i + 1])
- {
- hold = a[i];
- a[i] = a[i + 1];
- a[i + 1] = hold;
- }
- }
Объяснение кода листинга программы
- В функции main() мы объявляем массив arr[SIZE] размером 18 и инициализируем его нулями.
- В функции search(int a[], int size) мы объявляем переменную f1 равной 1. Эта переменная будет использоваться для хранения произведения ненулевых элементов на позициях, кратных трём.
- В функции MaxMin(int a[], int size) мы объявляем переменные max и min равными a[0]. Эти переменные используются для хранения текущего максимального и минимального элемента.
- Мы создаем новый массив A[size], в котором будут храниться квадраты выбранных элементов.
- В функции increase(int a[], int size) мы объявляем переменную hold равной a[i]. Эта переменная используется для временного хранения элемента при его перестановке.
- Мы сортируем элементы массива a[], которые не кратны трём, по возрастанию.
- В функции search(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент находится на позиции, кратной трём, то мы умножаем его на f1.
- В конце функции search(int a[], int size) мы выводим значение переменной f1, которое и является искомым произведением.
- В функции MaxMin(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент меньше max, то мы обновляем max. Аналогично, если текущий элемент больше min, то мы обновляем min.
- Мы находим минимальное и максимальное значение в массиве a[] и сохраняем их в переменных min и max.
- Мы создаем новый массив A[size], в котором будут храниться квадраты выбранных элементов.
- Мы проходим по всем элементам массива a[], начиная с min и до max (включительно), и если текущий элемент не кратен трём, то мы добавляем его в массив A[]**, возведя в квадрат.
- В функции increase(int a[], int size) мы проходим по всем элементам массива a[] и если текущий элемент не кратен трём и больше следующего элемента, то мы меняем их местами с помощью переменной hold.
- Мы сортируем элементы массива a[], которые не кратны трём, по возрастанию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д