Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами - 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);
}

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

Код выполняет следующие действия:

  1. Ввод числа N, которое определяет размер массива.
  2. Выделение памяти под массив с использованием функции malloc.
  3. Ввод элементов массива с помощью функции scanf.
  4. Поиск максимального элемента в первой части массива с помощью цикла for и условного оператора if.
  5. Вывод найденного максимального элемента на экран с помощью функции printf.
  6. Поиск промежутка между первым и вторым нулевыми элементами массива. Если в массиве больше двух нулевых элементов, то поиск пропускается.
  7. Вычисление произведения элементов, расположенных между первым и вторым нулевыми элементами массива.
  8. Вывод результата на экран с помощью функции printf.
  9. Выделение памяти под второй массив с использованием функции malloc.
  10. Копирование элементов из первого массива во второй с использованием цикла for и условного оператора if.
  11. Вывод элементов второго массива на экран с помощью цикла for и функции printf.
  12. Поиск количества элементов, расположенных между первым и вторым нулевыми элементами в массиве (версия 4).
  13. Вывод результата на экран с помощью функции printf.
  14. Освобождение памяти, выделенной под массивы, с использованием функции free.

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


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

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

10   голосов , оценка 4.3 из 5
Похожие ответы