Форум программистов, компьютерный форум CyberForum.ru

Вычислить сумму отрицательных элементов массива - C++

Восстановить пароль Регистрация
 
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
01.02.2014, 18:41     Вычислить сумму отрицательных элементов массива #1
Пожалуйста помогите!
В одномерном массиве, состоящий из n действительных элементов, вычислить:
1.сумму отрицательных элементов массива
2.произведение элементов массива, расположенных между максимальным и минимальным элементами
Сортировать элементы массива по возрастанию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 18:41     Вычислить сумму отрицательных элементов массива
Посмотрите здесь:

C++ Вычислить сумму отрицательных элементов массива
C++ вычислить сумму отрицательных элементов массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов массива C++
Вычислить сумму отрицательных элементов массива и произведение элементов, расположенных между максимальным и минимальным элементами C++
В одномерном массиве вычислить сумму отрицательных элементов, произведение элементов массива между максимальным и минимальным элементами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
01.02.2014, 19:49     Вычислить сумму отрицательных элементов массива #2
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
 
int main()
{
    srand(time(0));
    int n, max_index, min_index;
    cout << "Enter n: "; cin >> n;
    float *mas = new float[n];
    float negative = 0, min = 0, max = 0, mult = 1;
    
    for(int i = 0; i < n; i++)
    {
        mas[i] = (100 - rand() % 200 + 1) / sqrt(rand() % 10 + 1);
    }
    
    for(int i = 0; i < n; i++)
    {
        cout << mas[i] << endl;
    }
    
    for(int i = 0; i < n; i++)
    {
        if(mas[i] < 0)
        {
            negative += mas[i];
        }
        if(min > mas[i])
        {
            min = mas[i];
            min_index = i;
        }
        if(max < mas[i])
        {
            max = mas[i];
            max_index = i;
        }
    }
    
    if(max == 0)
    {
        float temp = min;
        for(int i = 0; i < n; i++)
        {
            if(mas[i] > temp)
            {
                temp = mas[i];
                max = temp;
                max_index = i;
            }
        }
    }
    
    if(min == 0)
    {
        float temp = max;
        for(int i = 0; i < n; i++)
        {
            if(mas[i] < temp)
            {
                temp = mas[i];
                min = temp;
                min_index = i;
            }
        }
    }
    
    if(min_index > max_index)
    {
        int temp = max_index;
        max_index = min_index;
        min_index = temp;
    }
    
    min_index++;
    
    if(min_index == max_index)
        cout << "\n\nMultiplication: No such elements" << endl;
    else
    {
        for(; min_index < max_index; min_index++)
        {
            mult *= mas[min_index];
        }    
        cout << "Multiplication: " << mult << endl;
    }
    
    cout << "Negative elements sum: " << negative << endl;
       
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < i; j++)
        {
            if(mas[i] > mas[j])
            {
                float temp = mas[i];
                mas[i] = mas[j];
                mas[j] = temp;
            }
        }
    }
    
    cout << "\n\nSorted:\n";
    
    for(int i = 0; i < n; i++)
    {
        cout << mas[i] << endl;
    }
    
    delete []mas;
    
    system("pause");
    return 0;
}
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
02.02.2014, 15:48  [ТС]     Вычислить сумму отрицательных элементов массива #3
что значит
C++
1
2
3
4
 for(int i = 0; i < n; i++)
    {
        mas[i] = (100 - rand() % 200 + 1) / sqrt(rand() % 10 + 1);
    }
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
02.02.2014, 16:09     Вычислить сумму отрицательных элементов массива #4
Iryna_Light, i-тый элемент массива равен сотне минус рандомное значение поделенное с остатком на двести плюс один, и все это поделить на квадратный корень из рандомного значение поделенного с остатком на десять плюс один; примерно это формула(x = rand() % 200; y = rand() % 10)
http://www.cyberforum.ru/cgi-bin/latex.cgi?mass[i] = \frac{100 - x +1}{sqrt(y+1)}
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
02.02.2014, 16:10     Вычислить сумму отрицательных элементов массива #5
Цитата Сообщение от Iryna_Light Посмотреть сообщение
что значит
C++
1
2
3
4
 for(int i = 0; i < n; i++)
    {
        mas[i] = (100 - rand() % 200 + 1) / sqrt(rand() % 10 + 1);
    }
Это заполнение элементов массива случайными числами. Функция rand генерирует случайные числа, возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX.
rand() % 200 - генерация чисел в диапазоне от 0 до 199
rand() % 10 - генерация чисел в диапазоне от 0 до 9
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
02.02.2014, 18:36     Вычислить сумму отрицательных элементов массива #6
Iryna_Light, точнее случайные числа от -100 до 100, деленые на корень от 1 до 10.
Таким образом "имитируются" действительные числа.
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
02.02.2014, 19:35  [ТС]     Вычислить сумму отрицательных элементов массива #7
а если целые, то как?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
02.02.2014, 19:55     Вычислить сумму отрицательных элементов массива #8
Iryna_Light от -100 до 100:
C++
1
mas[i] = 100 - rand() % 200 + 1;
от 1 до 100:
C++
1
mas[i] = rand() % 100 + 1;
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
02.02.2014, 21:34  [ТС]     Вычислить сумму отрицательных элементов массива #9
если массив состоит только из целых чисел, что делать?
данная функция генерирует и дробные и целие
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
02.02.2014, 21:45     Вычислить сумму отрицательных элементов массива #10
Iryna_Light, 16-ую строку программы замените на:
C++
1
mas[i] = 100 - rand() % 200 + 1;
Будут сгенерированы целые числа от -100 до 100.
Если нужны числа больше, на пример от -1000 до 1000:
C++
1
mas[i] = 1000 - rand() % 2000 + 1;
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
02.02.2014, 22:17  [ТС]     Вычислить сумму отрицательных элементов массива #11
Большое спасибо! Еще пожалуйста такой вопрос на счет произведения
зачем такие условия (строки 42 -, 56 -, 70 -)
и будет правильно такое?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
   for(i=1; i<n; i++)               
   {
      if(mas[i] > max)
      {
         max = mas[i];
         max_i = i;
      }
      if(mas[i] < min)
      {
         min = mas[i];
         min_i = i;       
      }
   }  
 
   
   p=1; 
   
   for ( i = ((min_i < max_i)? min_i : max_i); i <= ((min_i > max_i)?  min_i : max_i); ++i)
      p *= mas[i]; 
  
   cout << "Proizvedenie : " << p << "\n";
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
02.02.2014, 23:18     Вычислить сумму отрицательных элементов массива #12
Iryna_Light
42 - проверяется вариант при котором все значения массива отрицательные и
изменяется значение max, сохраняя индекс.

56 - проверяется вариант при котором все значения массива положительные и
изменяется значение min, сохраняя индекс.

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

В эту часть не полностью вник, но думаю будут недочёты:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(i=1; i<n; i++) 
{ 
    if(mas[i] > max) 
    { 
        max = mas[i]; 
        max_i = i; 
    } 
    if(mas[i] < min) 
    { 
        min = mas[i]; 
        min_i = i; 
    } 
}
Здесь i должно быть меньше (<) значения min_i или max_i:
C++
1
2
for ( i = ((min_i < max_i)? min_i : max_i); i < ((min_i > max_i)?  min_i : max_i); ++i)
      p *= mas[i];
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
04.02.2014, 00:30  [ТС]     Вычислить сумму отрицательных элементов массива #13
GuGo1991, а почему нужно отдельно описывать для положительных и отрицательных?
(строки 42 -, 56 -)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 01:00     Вычислить сумму отрицательных элементов массива
Еще ссылки по теме:

Вычислить сумму отрицательных элементов массива C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов массива C++
C++ Вычислить сумму отрицательных нечетных элементов массива

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

Или воспользуйтесь поиском по форуму:
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
04.02.2014, 01:00     Вычислить сумму отрицательных элементов массива #14
Iryna_Light, цикл на 24 строчке определяет максимальное и положительное значения,
но если все элементы только отрицательные или только положительные, тогда max будет
равен 0 или min будет равен 0, соответственно. Поэтому ещё раз проверяем max на 42 стр. и
min на 56-ой.
Yandex
Объявления
04.02.2014, 01:00     Вычислить сумму отрицательных элементов массива
Ответ Создать тему
Опции темы

Текущее время: 07:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru