Суммирование отрицательных элементов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Помогите решить проблему. Выводит сумму массива , но не правильно. Необходимо чтоб выводилось одно число, а у меня получается такая каша---
#include<iostream>
#include<conio.h>
 
using namespace std;
 
int sum = 0;
 
int main()
{
    setlocale(LC_ALL, "rus");
    cout << "\t\t\tЭлементы массива C: \n\n";
    int masC[10] = { 2,-1,-43,33,79,-19,10,-4,3,-33 };
    int size = 10;
    int masB[10] = {};
    int per = 0;
    for (int i = 0; i<10; i++)
    {
        cout << masC[i] << "\t";
    }
 
    for (int i = 0; i<10; i++)
    {
        if (masC[i]<0)
            masB[i] = masC[i];
 
    }
 
    for (int a = 1; a < size; a++)
 
    {
        for (int b = size - 1; b >= a; b--)
        {
            if (masB[b - 1]>masB[b])
            {
                per = masB[b - 1];
                masB[b - 1] = masB[b];
                masB[b] = per;
            }
        }
    }
    cout << endl;
    cout << "\t\t* Записать в массив В целых чисел *\n\t * в порядке убывания отрицательные элементы массива С *\n\n\t\t\t\tМассив B:\n\n";
    for (int i = 0; i<10; i++)
    
        cout << masB[i] << "\t";
    cout << "\n\nСумма:";
    for (int i = 0; i<10; i++) {
        if(masB[i]<0)
        sum += masB[i];
        cout <<sum;
    }
    _getch();
    return 0;
}

Решение задачи: «Суммирование отрицательных элементов массива»

textual
Листинг программы
#include<iostream>
#include<conio.h>
 
using namespace std;
 
int sum = 0;
 
int main()
{
    setlocale(LC_ALL, "rus");
    cout << "\t\t\tЭлементы массива C: \n\n";
    int masC[10] = { 2,-1,-43,33,79,-19,10,-4,3,-33 };
    int size = 10;
    int masB[10] = {};
    int per = 0;
    for (int i = 0; i<10; i++)
    {
        cout << masC[i] << "\t";
    }
 
    for (int i = 0; i<10; i++)
    {
        if (masC[i]<0)
            masB[i] = masC[i];
 
    }
 
    for (int a = 1; a < size; a++)
 
    {
        for (int b = size - 1; b >= a; b--)
        {
            if (masB[b - 1]>masB[b])
            {
                per = masB[b - 1];
                masB[b - 1] = masB[b];
                masB[b] = per;
            }
        }
    }
    cout << endl;
    cout << "\t\t* Записать в массив В целых чисел *\n\t * в порядке убывания отрицательные элементы массива С *\n\n\t\t\t\tМассив B:\n\n";
    for (int i = 0; i<10; i++)
    
        cout << masB[i] << "\t";
    cout << "\n\nСумма:";
    for (int i = 0; i<10; i++) {
        if(masB[i]<0)
        sum += masB[i];
    }
     cout <<sum;
    _getch();
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы.
  2. Объявляются переменные: sum - для хранения суммы отрицательных элементов массива; masC - массив, содержащий элементы для обработки; size - размер массива masC; masB - массив для хранения элементов, отсортированных по убыванию; per - для временного хранения элемента.
  3. Выводится приглашение для ввода элементов массива masC.
  4. Заполняется массив masC.
  5. Выводится приглашение для ввода элементов массива masB.
  6. Создается цикл для перебора элементов массива masC и проверки их знака. Если элемент отрицательный, он копируется в соответствующую позицию массива masB.
  7. Создается цикл для сортировки элементов массива masB по убыванию.
  8. Выводится приглашение для ввода элементов массива masB.
  9. Создается цикл для перебора элементов массива masB и нахождения их суммы.
  10. Выводится сумма элементов массива masB.
  11. Ждется нажатие клавиши для выхода из программы.
  12. Возвращается 0, что означает успешный конец работы программы.

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


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

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

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