Посчитать произведение, сумму ,количество элементов положительных и отрицательных в массиве

Написать программы для решения следующих задач:

  1. Посчитать сумму всех элементов, исключая третий элемент в одномерном массиве.
  2. Посчитать произведение всех четных элементов массива, значение которых меньше числа в. Число в задается пользователем.
  3. Посчитать количество элементов положительных и отрицательных в массиве.
  4. Вывести первый и последний ненулевой элемент в массиве.

Код смогла написать только для первого задания, для остальных не получается. Помогите, пожалуйста !!!!

#include <stdio.h>
#include <stdlib.h>

int main()
{

// Порахувати суму всіх елементів, виключаючи третій елемент у одновимірному масиві.

int a[5] ; 

for(int i = 0; i<5; i++)
{
    printf ("\n a[%d] = ", i);
    scanf ("%d",&a[i]);
}

int sum = 0;
int mult = 1;


 for(int i = 0; i<5; i++)
 {
     sum += a[i];
     mult *= a[i];

 }
  printf ("\n Array: ");
  for(int i = 0; i<5; i++)
  {

    if (i == 2) continue;

    printf ("%d", a[i]);

  }

  printf ("\nSum of elements: %d", sum);
  printf ("\nMultiplication of elments: %d", mult);

  int B[1]; //Порахувати добуток усіх парних елементів масиву, значення яких менше числа В. Число В задається користувачем.

  for(int i = 0; i<1; i++)
  {
    printf ("\n B[%d] = ", i);
    scanf ("%d",&B[i]);
  }

  for(int i = 0; i<1; i++)
  {
      int mult = 1;
      if (i<B & i%2==0)
       mult *= B[i];
  printf ("%d", B[i]);

  }
  printf ("\nMultiplication of paired elments: %d", mult );
  
return 0;

}


Ответы (1 шт):

Автор решения: MBo

Честно говоря, сумбур какой-то написан.

Вы и сумму неверно посчитали. Вы же знаете, как использовать номер элемента, а применяете это для какого-то непонятного вывода

int sum = 0;
for(int i = 0; i<5; i++)  
{
    if (i != 2) 
       sum += a[i];
}

Число b вводится один раз

int b;
printf ("\n b = ");
scanf ("%d",&b);

И затем используется

int mult = 1;
for(int i = 0; i<5; i++)
{
   if (a[i]<b && a[i]%2==0)
    mult *= a[i];
}

Положительные и отрицательные вроде нетрудно подсчитать:

int nplus = 0;
int nminus = 0;
for(int i = 0; i<5; i++)
{
   if (a[i]>0)
      nplus++;
   else if (a[i]<0)
            nminus++;
}

Для ненулевых:

int nzfirst = 0;
int nzlast = 0;
for(int i = 0; i<5; i++)
{
   if (a[i]){
      if (nzfirst)  
         nzlast = a[i];
      else
         nzfirst = a[i];
   }
}
if (nzlast==0)
   nzlast = nzfirst; 

Надеюсь, вывести полученные значения сможете сами

→ Ссылка