Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C (СИ) (74427)
Формулировка задачи:
В одномерном массиве, состоящем из N целых элементов, вычислить:
1) Номер максимального элемента массива.
2) Произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
3) Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине – элементы стоявшие в четных позициях.
4) Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю.
Решение задачи: «Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { int i,n,k,m,f,q,q4; printf("N="); scanf("%d",&n); int *arr = (int*) malloc(n * sizeof(float)); for(i=0; i< n; i++) scanf("%d",&arr[i]); // первая часть задачи k = arr[0]; for(i=1; i< n; i++) { if (arr[i] > k) { k = arr[i]; } } printf("MAX: %d\n",k); // вторая часть m = 1; for(i=0; i< n; i++) { if (arr[i] == 0 && i < n) { for(int j=i+1; j< n; j++) { if (arr[j] == 0) { break; } m = m*arr[j]; } break; } } printf("Otvet k 2 : %d\n",m); // третья часть int *arr2 = (int*) malloc(n * sizeof(float)); f = 1; for(i=0; f < n ; i++) { arr2[i] = arr[f]; f = f + 2; } f = 0; for(; i < n && f < n; i++) { arr2[i] = arr[f]; f = f+2; } printf("For the work 3\n"); for(i=0; i < n ; i++) { printf("%d\n",arr2[i]); } // четвертая часть q4 = 0; int j = 0; for(i=0; i< n; i++) { q = 0; if (arr[i] == 0 && i < n) { for(j=i+1; j< n && arr[j] != 0; j++) { q++; } } i = j-1; if (q4 < q) { q4 = q; } } printf("Answer 4: %d\n",q4); // удаляем динамические массивы free(arr); free(arr2); }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Ввод числа N, которое определяет размер массива.
- Выделение памяти под массив с использованием функции malloc.
- Ввод элементов массива с помощью функции scanf.
- Поиск максимального элемента в первой части массива с помощью цикла for и условного оператора if.
- Вывод найденного максимального элемента на экран с помощью функции printf.
- Поиск промежутка между первым и вторым нулевыми элементами массива. Если в массиве больше двух нулевых элементов, то поиск пропускается.
- Вычисление произведения элементов, расположенных между первым и вторым нулевыми элементами массива.
- Вывод результата на экран с помощью функции printf.
- Выделение памяти под второй массив с использованием функции malloc.
- Копирование элементов из первого массива во второй с использованием цикла for и условного оператора if.
- Вывод элементов второго массива на экран с помощью цикла for и функции printf.
- Поиск количества элементов, расположенных между первым и вторым нулевыми элементами в массиве (версия 4).
- Вывод результата на экран с помощью функции printf.
- Освобождение памяти, выделенной под массивы, с использованием функции free.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д