Найти произведение ненулевых элементов массива, находящихся на позициях, кратных числу 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[], которые не кратны трём, по возрастанию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д