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

вычислить сумму элементов,расположенных между максимальным и минимальным элементом - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
Алён4uk
 Аватар для Алён4uk
12 / 12 / 3
Регистрация: 03.04.2011
Сообщений: 75
14.09.2011, 09:42     вычислить сумму элементов,расположенных между максимальным и минимальным элементом #1
вычислить сумму элементов,расположенных между максимальным и минимальным элементом (первыми по порядку, если их нескглько) Если вычислить сумму не удается, выдать сообщерие с указанием причины.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 09:42     вычислить сумму элементов,расположенных между максимальным и минимальным элементом
Посмотрите здесь:

C++ Вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами
Подсчитать сумму элементов, расположенных между максимальным и минимальным элементами C++
Вычислить сумму отрицательных элементов массива и произведение элементов, расположенных между максимальным и минимальным элементами C++
вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами; C++
вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами; C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
14.09.2011, 09:50     вычислить сумму элементов,расположенных между максимальным и минимальным элементом #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
double array[128];
for(int i = 0; i < 128; ++i)
array[i] = rand();
int max_index = 0,min_index = 0;
for(int i = 0; i < 128; ++i)
{
if(array[i] > array[max_index])
max_index = i;
else
if(array[i] < array[min_index])
min_index= i;
}
double sum = 0;
int z = 0;//Переменная,которая будет считать сколько чисел добавлено.
for(int i = (min(min_index,max_index) + 1) ;i<(max(min_index,max_index) - 1);++i)
{
sum += array[i];
++z;
}
if(z == 0)
printf("No elements");
else
printf("Result - %f",sum);
DanilAREFY
19 / 19 / 2
Регистрация: 12.04.2011
Сообщений: 35
14.09.2011, 10:34     вычислить сумму элементов,расположенных между максимальным и минимальным элементом #3
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
//В одномерном массиве, сотоящем из n вещественных элементов, вычислить:
//1) сумму положительных элементов массива;
//2) произведение элементов массива, расположенных между максимальным по модулю
//и минимальным по модулю элементами.
// Упорядочить элементы массива по убыванию.
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"");
    int N, nomax=0, nomin=0;
    float sum=0, max=0, min=0, pro=1, b=0;
    cout << "Введите количество элементов массива:";
    cin >> N;
    float * A = new float [N];
    for (int i = 0; i < N; i++) //ввод массива
    {
        cin >> A[i];
    }
    for (int i = 0; i < N; i++) //ищем сумму положительных элементов
    {
        if (A[i] > 0)
        {
            sum += A[i];
        }
    }
    max=abs(A[0]); //берем за максимум 0-й элемент массива 
    min=abs(A[0]); //берем за минимум 0-й элемент массива
    for (int i = 1; i < N; i++) 
    {
        if (abs (A[i]) > max) //ищем номер максимального элемента массива
        {
            max = abs (A[i]);
            nomax = i;
        }
        if (abs (A[i]) < min) //ищем номер минимального элемента массива
        {
            min = abs (A[i]);
            nomin = i;
        }
    }
    if (nomin < nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1) //произведение элементов массива при условии, что min левее max, исключая рядомстоящие
    {
        for (int i = nomin+1; i < nomax; i++) 
        {
            pro*=A[i];
        }
        cout << endl;
        cout << "Произведение равно:" << pro << endl;
    }
    if (nomin > nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1) //произведение элементов массива при условии, что min правее max, исключая рядомстоящие
    {
        for (int i = nomax+1; i < nomin; i++)
        {
            pro*=A[i];
        }
        cout << "Произведение равно:" << pro << endl;
    }
    if (nomin == nomax || nomax == nomin-1 || nomax == nomin+1) //произведение элементов массива при условии, что min = max
    {
        cout << "Произведение равно:" << 0 << endl;
    }
    cout << "Сумма положительных элементов:" << sum << endl << endl;
    for (int i = 0; i < N; i++) //сортировка массива по убыванию пузырьком
    {
        for (int j = 0; j < N-i-1; j++)
        {
            if (A[j] < A [j+1])
            {
                float buf = A[j];
                A[j] = A[j+1];
                A[j+1] = buf;
            }
        }
    }
    cout << "Отсортированный по убыванию массив:" << endl;
    for (int i = 0; i < N; i++) //вывод отсортированного массива по убыванию
    {
        cout << A[i] << endl;
    }
    cout << endl;
    system ("pause");
    return 0;
    delete [] A; //очищаем выделенную память
}
Впринципе принцип один и тотже, только нужно поменять произведение на сумму, ну и убрать ненужное
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.09.2011, 13:12     вычислить сумму элементов,расположенных между максимальным и минимальным элементом #4
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
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>
 
int main()
{
     std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
     if (vec.size() <= 2)
     {
        std::cerr << "Too few elements in array" << std::endl;
        return 1;
     }
     std::vector<int>::iterator min = std::min_element(vec.begin(), vec.end());
     std::vector<int>::iterator max = std::max_element(vec.begin(), vec.end());
     if (*min == *max)
     {
         std::cerr << "Min and max are equal" << std::endl;
         return 1;
     }
     bool flg = min < max;
     int sum = std::accumulate(flg ? min + 1 : max + 1, flg ? max : min, 0);
     std::cout << "Sum is: " << sum << std::endl;
}
Yandex
Объявления
14.09.2011, 13:12     вычислить сумму элементов,расположенных между максимальным и минимальным элементом
Ответ Создать тему
Опции темы

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