Как найти сумму отрицательных элементов в массиве?

Добрый вечер!
Условия задачи: Дано одномерный массив А, состоящий из 18 элементов. Вычислить и напечатать сумму отрицательных одинаковых элементов.

Не понимаю, как мне подсчитать суму отрицательных значений и отсортировать массив, чтобы одинаковые элементы можно было вводить в разброс (если я ввожу одинаковые элементы в разброс, ничего не работает).
Спасибо!
Код задачи:
#include <stdlib.h>
#include <stdio.h>
#define N 18
int main() {
    int i, sum=0;
    int a[N] = {-5, -5, 6, 13, 10, 16, -18, -18, 11, 17, -3, -3, -7, -7, 9, 31, -4, -4};
    printf("Выходные данные = ");
    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\nПарные элементы = ");
    for (i = 0; i < N; i++) {
        if (a[i] == a[i - 1] && a[i] < 0) {
            printf("%i ", a[i]);
            }
        }
        for (i = 0; i < N; i++) {
            sum += a[i] < 0;
        }
        printf("\nСумма отрицательных элементов = %d", sum);

}
  • Вопрос задан
  • 4329 просмотров
Решения вопроса 1
myjcom
@myjcom
Вычислить и напечатать сумму отрицательных одинаковых элементов.

Раз

#include <stdio.h>

#define N 18

int main()
{
  int a[N] = {-5, -5, 6, 13, 10, 16, -18, -18, 11, 17, -3, -3, -7, -7, 9, 31, -4, -4};
  int checked[N] = {0};
  int total = 0;

  for(int i = 0; i < N - 1; i++)
  {
    if(a[i] < 0)
    {
      int sum = a[i];
      for(int j = i + 1; j < N; j++)
      {
        if(!checked[j] && a[i] == a[j])
        {
          sum += a[j];
          checked[j] = 1;
        }
      }

      if(sum != a[i])
      {
        total += sum;
      }
    }
  }
  (total) ? printf("total sum %d", total)
          : printf("not found");
  return 0;
}


Два

#include <stdio.h>

#define N 18

int main()
{
  int a[N] = {-5, -5, 6, 13, 10, 16, -18, -18, 11, 17, -3, -3, -7, -7, 9, 31, -4, -4};

  int checked[N] = {0};

  int total = 0;

  for(int i = 0; i < N - 1; i++)
  {
    if(a[i] < 0)
    {
      int count = 1;

      for(int j = i + 1; j < N; j++)
      {
        if(!checked[j] && a[i] == a[j])
        {
          count++;
          checked[j] = 1;
        }
      }

      if(count > 1)
      {
        total += a[i] * count;
        // Тут сложение можно заменить умножением
        printf("number %d count %d sum %d\n", a[i], count, a[i] * count);
      }
    }
  }
  (total) ? printf("total sum %d", total)
          : printf("not found");
  return 0;
}

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы