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

3 / 3 / 3

Регистрация: 04.11.2009

Сообщений: 98

1

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

27.02.2011, 03:54. Показов 20598. Ответов 9


Студворк — интернет-сервис помощи студентам

Приветствую всех)) Проблема в том что программу надо реализовать в виде функции, а я без малейшего понятия как ето делать)) помогите кто чем может)
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. сумму отрицательных элементов массива.
2. произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.



0



В астрале

Эксперт С++

8048 / 4805 / 655

Регистрация: 24.06.2010

Сообщений: 10,562

27.02.2011, 04:03

2

Iliabobr, Скажу сразу по обеим темам.
1) Проблемы с функциями лечатся прочтением части учебника по этой теме и осмыслением прочитанного.
2) Проблемы с функциями решаются поиском по форуму, т.к. таких тем огромное кол-во.

Я бы выбрал первый вариант, если бы у меня были такие проблемы, да и вам того же советую.



0



2 / 2 / 2

Регистрация: 07.01.2011

Сообщений: 19

27.02.2011, 12:12

3

Смотри здесь Я решал уже такую задачу, а про функции читай и разбирайся, если не понятно пиши объясним



0



Iliabobr

3 / 3 / 3

Регистрация: 04.11.2009

Сообщений: 98

27.02.2011, 16:42

 [ТС]

4

ну вот я начал программу, как я понял в функции надо объявить массив м количество елементов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
 
double mak (double *massive, int n);
 
int main()
{
    int i, n, imax, imin, p_min_max, s_minus;
 
    cout<<"Vvedite kolichestvo elementov massiva: " << endl;
    cin>>n;
 
    cout<<"Vvedite "<<n<<endl;
    for(i=0; i<n; i++)
        cin>>massive[i];
 
    cout<<endl;
    cout<<"Ishodniy massiv: "<<endl;
    for(i=0; i<n;i++)

Добавлено через 40 секунд

Цитата
Сообщение от Iliabobr
Посмотреть сообщение

массив м количество елементов

и количество элементов то есть

Добавлено через 49 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream.h>
 
double mak (double *massive, int n);
 
int main()
{
    
    int i, n, imax, imin, p_min_max, s_minus,p,S;
    double *massive =new double [n];
 
    cout<<"Vvedite kolichestvo elementov massiva: " << endl;
    cin>>n;
 
    cout<<"Vvedite "<<n<<" elementov"<<endl;
    for(i=0; i<n; i++)
        cin>>massive[i];
 
    cout<<endl;
    cout<<"Ishodniy massiv: "<<endl;
    for(i=0; i<n;i++)
        cout<<massive[i]<<" ";
    cout<<endl;
    cout<<endl;
    return 0;
}
double mak (double *massive, int n)
//for(int i=0; i<n;i++;)
//massive[i]=a[i];
{
    int S=0;
    for(int i=0;i<n;i++)
    {
        if (massive[i]<0) S+=massive[i];
        cout<<"S= "<<S;
        cin>>S;
    }
    return S;
}

Вот пытался сумму отрицательных елементов посчитать, но прога даже не выводит ответ



0



ForEveR

В астрале

Эксперт С++

8048 / 4805 / 655

Регистрация: 24.06.2010

Сообщений: 10,562

27.02.2011, 16:54

5

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream.h>
 
double mak (double *massive, int n);
 
int main()
{
        
        int i, n, imax, imin, p_min_max, s_minus,p,S;
 
        cout<<"Vvedite kolichestvo elementov massiva: " << endl;
        cin>>n;
        double *massive =new double [n];
        cout<<"Vvedite "<<n<<" elementov"<<endl;
        for(i=0; i<n; i++)
                cin>>massive[i];
 
        cout<<endl;
        cout<<"Ishodniy massiv: "<<endl;
        for(i=0; i<n;i++)
                cout<<massive[i]<<" ";
        cout<<"Sum is: "<< mak(massive, n) <<'n';
        cout<<endl;
        cout<<endl;
        delete[] massive;
        return 0;
}
double mak (double *massive, int n)
{
        int S=0;
        for(int i=0;i<n;i++)
        {
                if (massive[i]<0) S+=massive[i];
        }
        return S;
}



1



Iliabobr

3 / 3 / 3

Регистрация: 04.11.2009

Сообщений: 98

27.02.2011, 18:53

 [ТС]

6

я вот не понимаю, где увеличить шрифт в с++?=))))

Добавлено через 29 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream.h>
 
double mak (double *massive, int n);
 
int main()
{
    int i, n, imax, imin, p_min_max, s_minus,p,S;
 
        cout<<"Vvedite kolichestvo elementov massiva: " << endl;
        cin>>n;
        double *massive =new double [n];
        cout<<"Vvedite "<<n<<" elementov"<<endl;
        for(i=0; i<n; i++)
                cin>>massive[i];
 
        cout<<endl;
        cout<<"Ishodniy massiv: "<<endl;
        for(i=0; i<n;i++)
                cout<<massive[i]<<" n";
        
        
        cout<<"Sum is: "<< mak(massive, n) <<'n';
        cout<<endl;
        cout<<"p_min_max= "<<p_min_max<<'n';
        cout<<endl;
        delete[] massive;
        return 0;
}
double mak (double *massive, int n)
{      
        int S=0;
        for(int i=0;i<n;i++)
        {
                if (massive[i]<0) S+=massive[i];
        }
        return S;
        int imin,imax,p_min_max;
        for(i=imin=imax=0; i<n; i++)
        {
            if(massive[i]>massive[imax]) imax=i;
            if(massive[i]<massive[imin]) imin=i;
        }
        cout<<"min= "<<massive[imin]<<endl;
        cout<<"max= "<<massive[imax]<<endl;
            p_min_max=1;
            for(i=imin+1; i<imax; i++)
            {
                p_min_max*=massive[i];
            }
            return p_min_max;
 
}

выводит p_min_max нехорошее, наверно чето с выводом в самой программе нето

Добавлено через 30 секунд

Цитата
Сообщение от Iliabobr
Посмотреть сообщение

cout<<“p_min_max= “<<p_min_max<<‘n’;

вот тут наверно ошибка

Добавлено через 33 минуты
вот вся программа, тока я не знаю как вывести упорядоченный массив и p_min_max

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<iostream.h>
#include<stdio.h>
 
double mak (double *massive, int n);
 
int main()
{
    int i, n, imax, imin, p_min_max, s_minus,p,S;
 
        cout<<"Vvedite kolichestvo elementov massiva: " << endl;
        cin>>n;
        double *massive =new double [n];
        cout<<"Vvedite "<<n<<" elementov"<<endl;
        for(i=0; i<n; i++)
                cin>>massive[i];
 
        cout<<endl;
        cout<<"Ishodniy massiv: "<<endl;
        for(i=0; i<n;i++)
                cout<<massive[i]<<" n";
        
        
      //  cout<<"Sum is: "<< mak(massive, n) <<'n';
    //  cout<<endl;
        //cout<<"p_min_max= "<<p_min_max<<'n';
       // cout<<endl;
 
        delete[] massive;
        return 0;
}
double mak (double *massive, int n)
{      
        int S=0;
        for(int i=0;i<n;i++)
        {
                if (massive[i]<0) S+=massive[i];
        }
        return S;
        int imin,imax,p_min_max;
        for(i=imin=imax=0; i<n; i++)
        {
            if(massive[i]>massive[imax]) imax=i;
            if(massive[i]<massive[imin]) imin=i;
        }
        cout<<"min= "<<massive[imin]<<endl;
        cout<<"max= "<<massive[imax]<<endl;
            p_min_max=1;
            for(i=imin+1; i<imax; i++)
            {
                p_min_max*=massive[i];
            }
            return p_min_max;
 
            for(i=0;i<n;i++)
            {
                int i_min=i;
                for(int j=i+1; j<n; j++)
                    if (massive[j]<massive[i_min]) i_min=j;
                    int tmp=massive[i];
                    massive[i]=massive[i_min];
                    massive[i_min]=tmp;
            }
            return 0;
            
    cout<<"Sorted array "<<endl;
    for(i=0;i<n;i++)
    cout<<massive[i]<<" ";
    cout<<endl;
    cout<<endl;
    return 0;
}



0



ForEveR

В астрале

Эксперт С++

8048 / 4805 / 655

Регистрация: 24.06.2010

Сообщений: 10,562

27.02.2011, 18:55

7

Iliabobr, Как бы вам сказать то откровенно…

C++
1
2
3
4
5
6
7
8
double mak (double *massive, int n)
{      
            int S=0;
        for(int i=0;i<n;i++)
        {
                if (massive[i]<0) S+=massive[i];
        }
        return S;

Все. Дальнейшей писанины для компилятора и программы не существует. После return – идет выход из функции, следовательно ничего, что написано дальше не выполняется.



0



3 / 3 / 3

Регистрация: 04.11.2009

Сообщений: 98

27.02.2011, 19:07

 [ТС]

8

точняк))
ну а каким образом мне тогда все действия под одну функцию запихать?



0



В астрале

Эксперт С++

8048 / 4805 / 655

Регистрация: 24.06.2010

Сообщений: 10,562

27.02.2011, 19:16

9

Iliabobr, Это плохо делать. Сделайте разные функции. Или используйте передачу параметров по ссылке. Либо создавать структуру с нужными полями, в функции создавать объект структуры, заполнять его нужными значениями по мере подсчетов. Возвращать в main объект структуры.



1



Iliabobr

3 / 3 / 3

Регистрация: 04.11.2009

Сообщений: 98

04.03.2011, 12:13

 [ТС]

10

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<iostream.h>
 
double mak (double *massive, int n);
double mak1 (double *massive, int n);
double mak2 (double *massive, int n);
 
int main()
{
    int i, n, imax, imin, p_min_max, s_minus,p,S;
 
        cout<<"Vvedite kolichestvo elementov massiva: " << endl;
        cin>>n;
        double *massive =new double [n];
        cout<<"Vvedite "<<n<<" elementov"<<endl;
        for(i=0; i<n; i++)
                cin>>massive[i];
 
        cout<<endl;
        cout<<"Ishodniy massiv: "<<endl;
        for(i=0; i<n;i++)
                cout<<massive[i]<<" n";
        
        
        cout<<"Sum is: "<< mak(massive, n) <<'n';
        cout<<endl;
        cout<<"p_min_max= "<<mak1(massive, n)<<'n';
        cout<<endl;
        cout<<"Sorteding array "<<mak2(massive, n)<<'n';
        cout<<endl;
        delete[] massive;
        return 0;
}
double mak (double *massive, int n)
{      
        int S=0;
        for(int i=0;i<n;i++)
        {
                if (massive[i]<0) S+=massive[i];
        }
        return S;
}
double mak1 (double *massive, int n)
{
        int i, imin,imax,p_min_max;
        for(i=imin=imax=0; i<n; i++)
        {
            if(massive[i]>massive[imax]) imax=i;
            if(massive[i]<massive[imin]) imin=i;
        }
        cout<<"min= "<<massive[imin]<<endl;
        cout<<"max= "<<massive[imax]<<endl;
            p_min_max=1;
            for(i=imin+1; i<imax; i++)
            {
                p_min_max*=massive[i];
            }
            return p_min_max;
}
double mak2 (double *massive, int n)
{
 
 
            for(int i=0;i<n;i++)
            {
                int i_min=i;
                for(int j=i+1; j<n; j++)
                    if (massive[j]<massive[i_min]) i_min=j;
                    int tmp=massive[i];
                    massive[i]=massive[i_min];
                    massive[i_min]=tmp;
            }
            cout<<"Sorted array "<<endl;
            for(i=0;i<n;i++)
            cout<<massive[i]<<" ";
            cout<<endl;
            
            return massive[i];
}

Вот так всё работает!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

04.03.2011, 12:13

Помогаю со студенческими работами здесь

Найти сумму отрицательных элементов массива
1) В одномерном массиве, состоящем из N действительных элементов, вычислить:
• сумму отрицательных…

Найти сумму отрицательных элементов массива
Здравствуйте, умные люди, помогите, плиз! я написал программу, компилятор выдаёт ноль ошибок, но…

Найти сумму отрицательных элементов массива
Привет, очень нужна ваша помощь.
Нужно программу на TurboC 3.0
Дан массив чисел а1,…, А20 и…

Найти сумму отрицательных элементов массива
Разработать программу обработки одномерного массива. Размерность массива задать именованной…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

10

numbers = [-2, -4, -5, 20, 18]
i = len(numbers) 
total = 0
while i >= 0 and numbers[i] < 0: 
    total += numbers[i]
    i -= 1
    print (total)

Выдаёт ошибку в 4 строке list index out of range, но i изначально равен 5, да и второе условие соблюдается. Что не так, подскажите.

Всем спасибо, решил так:

numbers = [-2, -4, -5, 20, 18]
i = 0
total = 0
while i < len(numbers) and numbers[i] < 0:
total = total + numbers[i]
i = i + 1
print(total)

задан 5 фев 2022 в 14:13

Артур's user avatar

АртурАртур

114 бронзовых знака

2

numbers = [-2, -4, -5, 20, 18]
numbers.sort()

res = 0
i = 0

while i < len(numbers):
    if numbers[i] < 0:
        res += numbers[i]
    else:
        break
    i += 1
print(res)
#-11

ответ дан 5 фев 2022 в 16:28

Anatoly Kritskiy's user avatar

3

индексы в python идут от нуля, следовательно, в вашем массиве максимальным индексом может быть только 4, поэтому у вас происходит выход за границы массива.

numbers = [-2, -4, -5, 20, 18]
numbers = sorted(numbers)
i = 0
total = 0
while numbers[i] < 0: 
    total += numbers[i]
    i += 1
    print(total)

либо сделать так:

numbers = [-2, -4, -5, 20, 18]
numbers = sort(numbers)
total = 0

for n in numbers:
    if n < 0:
        total += n
        print(total)
    else:
        break

ответ дан 5 фев 2022 в 14:34

zolars's user avatar

zolarszolars

5971 серебряный знак16 бронзовых знаков

9

numbers = [-2, -4, -5, 20, 18]
total = 0
i = len(numbers) - 1
while i >= 0:
    if numbers[i] < 0:
        total += numbers[i]
    else:
        break
    i -= 1
print(total)

ответ дан 5 фев 2022 в 14:58

Coder69's user avatar

1

Функция сложения всех отрицательных чисел в массиве

function sumMinus (arr) {
   return arr.filter(i=>i<0).map(i=>x+=i,x=0).reverse()[0]
}

Пример работы функции:

var massiv = [-10, -5, -3, -2, 0, 2, 3, 5, 10]
sumMinus (massiv)

В результате получаем сумму всех отрицательных чисел массива, равную -20.

Функция сложения всех отрицательных чисел в массиве - JavaScript

Функция сложения всех отрицательных чисел в массиве — JavaScript

Собственный метод для объектов-прототипов Array

Array.prototype.sumMinus = function() {
   return this.filter(i=>i<0).map(i=>x+=i,x=0).reverse()[0]
}

Пример работы метода:

[-5, -3, -2 , 0, 2, 3, 5].sumMinus()
10

Свой метод сложения всех отрицательных чисел в массиве - JavaScript

Свой метод сложения всех отрицательных чисел в массиве — JavaScript

Информационные ссылки

JavaScript | Как сложить все числа в массиве?

JavaScript | Как сложить все положительные числа в массиве?

Стандарт ECMAScript — Раздел «23.1.3 Properties of the Array Prototype Object» — https://tc39.es/ecma262/#sec-properties-of-the-array-prototype-object

Удалили первый и последний символы в строке - JavaScript

Есть строка: var stroka = «/Mazda%» Как нам удалить первый и последний символы в этой строке?   Видео   Способ № 1 […]

JavaScript | Как создать бегущую строку?

Код HTML-разметки с тегом script: <!DOCTYPE html> <html lang=«en»> <head>     <meta charset=«UTF-8»>     <meta http-equiv=«X-UA-Compatible» content=«IE=edge»>     <meta […]

Возведение в куб - JavaScript

  Способ № 1 Мы можем использовать оператор двойной звёздочки ** — это «экспоненциальный оператор» (Exponentiation Operator) — оператор возведения в степень. […]

document.getElementsByTagName(«svg»)

Команда document.getElementsByTagName(«svg») возвращает HTML-коллекцию HTML-элементов <svg> со страницы (документа). Элементы коллекции тянут за собой всех потомков. Забор данных осуществляется в древовидном порядке, […]

Добрый вечер!
Условия задачи: Дано одномерный массив А, состоящий из 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);

}

Перейти к контенту

Вычислительная техника и дискретная математика

C++

Найдите сумму отрицательных элементов массива.

Решение:

int sum=0;
for (int i=0; i<n; i++)
{
   if (a[i]<0)
   {
      sum+=a[i];
   }
}
 
if (!sum)
{
   cout<<"no numbers < 0";
}
else
{
  cout<<"sum = "<<sum;
}

Рейтинг

( Пока оценок нет )

Добавить комментарий