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

Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию - C++

Восстановить пароль Регистрация
 
Ivan123456
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 9
29.10.2013, 17:30     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию #1
Помогите написать программу, работающую с одномерным вещественным массивом.
- количество элементов N=20;
- тип массива – вещественный.
Исходные данные:
-1.50 3.12 -0.15 1.17 7.77 -6.27 2.78 5.09 -9.31 -2.99
0.75 8.54 -9.31 4.27 3.12 0.10 -9.46 3.82 8.14 -3.64

Нужно :
- Найти сумму отрицательных элементов массива,
- Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
- Упорядочить элементы массива по возрастанию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 17:30     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию
Посмотрите здесь:

Найти сумму отрицательных элементов массива C++
C++ Найти сумму отрицательных элементов массива J(10).
Найти сумму отрицательных элементов массива J(10). C++
C++ Упорядочить массив Х(N) по возрастанию, найти сумму положительных элементов массива
C++ Помгите найти - сумму отрицательных элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.10.2013, 17:38     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию #2
1)
C++
1
2
3
4
std::accumulate(v.begin(), v.end(), 0., [](double sum, double value)
{
   return value < 0 ? sum + value : sum;
});
2)
C++
1
2
3
auto minmax = std::minmax_element(v.begin(), v.end());
std::accumulate(minmax.first > minmax.second ? minmax.second : minmax.first,
minmax.first > minmax.second ? minmax.first : minmax.second, 0., std::multiply<double>());
3)
C++
1
std::sort(v.begin(), v.end());
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.10.2013, 17:52     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию #3
Код для Microsoft Visual C++ 2010 Express

заголовочный файл stdafx.h
C++
1
2
3
4
5
6
7
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
Код программы
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 "stdafx.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    
    const int n = 20;
    double arr[n] = {-1.50, 3.12, -0.15, 1.17, 7.77, -6.27, 2.78, 5.09, -9.31, -2.99, 0.75, 8.54, -9.31, 4.27, 3.12, 0.10, -9.46, 3.82, 8.14, -3.64};
 
    double sum = 0;
    for (int i = 0; i < n; ++i)
    {
        if (arr[i] > 0) continue;
        sum += arr[i];
    }
 
    cout << "Сумма отрицательных элементов массива sum = " << sum << endl;
 
    double min = arr[0];
    int minPos = 0;
    double max = arr[0];
    int maxPos = 0;
 
    for (int i = 0; i < n; ++i)
    {
        if (min > arr[i]) { min = arr[i]; minPos = i;}
        if (max < arr[i]) { max = arr[i]; maxPos = i;}
    }
 
    if (minPos == maxPos)
    {
        cout << "Максимальный и минимальный элемент находятся на соседних позициях" << endl; 
    }
    else 
    {
        double product = 1.0;
        
        if (minPos > maxPos)
        {
            int tempPos = minPos;
            minPos = maxPos;
            maxPos = tempPos;
        }
        
        for (int i = minPos + 1; i < maxPos; ++i)
        {
            product *= arr[i];
        }
        cout << "Произведение элементов массива между максимальным и минимальным product = " << product << endl;
    }
 
    for (int i = 0; i < n - 1; ++i)
    {
        int min = i;
        for (int j = i + 1; j < n; ++j)
        {
            if(arr[min] < arr[j]) continue;
            min = j;
        }
        if (min != i)
        {
            double temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
 
    cout << "Отсортированный по возрастанию массив: " << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
Ivan123456
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 9
29.10.2013, 18:43  [ТС]     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию #4
Цитата Сообщение от Heidel Посмотреть сообщение
Код для Microsoft Visual C++ 2010 Express

заголовочный файл stdafx.h
C++
1
2
3
4
5
6
7
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
Код программы
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 "stdafx.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    
    const int n = 20;
    double arr[n] = {-1.50, 3.12, -0.15, 1.17, 7.77, -6.27, 2.78, 5.09, -9.31, -2.99, 0.75, 8.54, -9.31, 4.27, 3.12, 0.10, -9.46, 3.82, 8.14, -3.64};
 
    double sum = 0;
    for (int i = 0; i < n; ++i)
    {
        if (arr[i] > 0) continue;
        sum += arr[i];
    }
 
    cout << "Сумма отрицательных элементов массива sum = " << sum << endl;
 
    double min = arr[0];
    int minPos = 0;
    double max = arr[0];
    int maxPos = 0;
 
    for (int i = 0; i < n; ++i)
    {
        if (min > arr[i]) { min = arr[i]; minPos = i;}
        if (max < arr[i]) { max = arr[i]; maxPos = i;}
    }
 
    if (minPos == maxPos)
    {
        cout << "Максимальный и минимальный элемент находятся на соседних позициях" << endl; 
    }
    else 
    {
        double product = 1.0;
        
        if (minPos > maxPos)
        {
            int tempPos = minPos;
            minPos = maxPos;
            maxPos = tempPos;
        }
        
        for (int i = minPos + 1; i < maxPos; ++i)
        {
            product *= arr[i];
        }
        cout << "Произведение элементов массива между максимальным и минимальным product = " << product << endl;
    }
 
    for (int i = 0; i < n - 1; ++i)
    {
        int min = i;
        for (int j = i + 1; j < n; ++j)
        {
            if(arr[min] < arr[j]) continue;
            min = j;
        }
        if (min != i)
        {
            double temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
 
    cout << "Отсортированный по возрастанию массив: " << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
спасибо большое!)
Yandex
Объявления
29.10.2013, 18:43     Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию
Ответ Создать тему
Опции темы

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