Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
bbr
0 / 0 / 1
Регистрация: 10.12.2009
Сообщений: 42
1

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами

23.04.2010, 00:39. Просмотров 1222. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста.
Как найти произведение элементов массива, расположенных между максимальным и минимальным
элементами?

Заранее спасибо
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2010, 00:39
Ответы с готовыми решениями:

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Сгенерировать массив целых чисел. Найти произведение элементов массива, расположенных между...

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
в одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)сумму отрицательных...

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Найти произведение элементов массива, расположенных между максимальным и минимальным элементами. ...

Найти произведение элементов массива , расположенных между максимальным и минимальным элементами
Здравствуйте!:) Прошел несколько тем по C++ , а именно Базовые средства языка С++ и одномерные...

Найти произведение элементов массива,расположенных между минимальным и максимальным элементами
2.Найти произведение элементов массива,расположенных между минимальным и максимальным элементами.

3
insideone
Модератор
Автор FAQ
3674 / 951 / 114
Регистрация: 10.01.2010
Сообщений: 2,542
23.04.2010, 00:48 2
Цитата Сообщение от bbr Посмотреть сообщение
Как найти произведение элементов массива, расположенных между максимальным и минимальным
элементами?
один из очевиднейших способов это найти номер максимального а потом минимального элемента, а далее в цикле от наименьшего номера + 1 до наибольшего номера набирать умножения в одну переменную.

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>
using namespace std;
 
#define N 6
 
int getMax(int* a, size_t n){
    int res = 0;
    for (int i = 1; i < n; i++)
    {
        if ( a[i] > a[res] ) res = i;
    }
return res;
}
int getMin(int* a, size_t n){
    int res = 0;
    for (int i = 1; i < n; i++)
    {
        if ( a[i] < a[res] ) res = i;
    }
return res;
}
 
int main()
{
    int a[N] = {1, -3, 5, 8, 10, 3};
    int maximun = getMax(&a[0], N), minimum = getMin(&a[0], N);
    int from = min(maximun, minimum), to = max(maximun, minimum);
    int e = 1;
    for (int i = from + 1; i < to; i++)
    {
        e *= a[i];
    }
    cout << e;
return 0;
}
1
bbr
0 / 0 / 1
Регистрация: 10.12.2009
Сообщений: 42
23.04.2010, 01:21  [ТС] 3
огромное спасибо ^_^
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10618 / 6301 / 1581
Регистрация: 25.07.2009
Сообщений: 12,015
23.04.2010, 02:30 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
26
27
28
29
30
31
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <numeric>
#include <vector>
 
int main(){
    std::vector<int> arr;
    size_t cnt;
    int tmp;
    std::cout << "Number of elements: ";
    std::cin >> cnt;
    for ( size_t i = 0; i < cnt; ++i ){
        std::cout << "ARRAY[" << i << "] = ";
        std::cin >> tmp;
        arr.push_back(tmp);
    }
    
    std::vector<int>::const_iterator emax = std::max_element(arr.begin(), arr.end());
    std::vector<int>::const_iterator emin = std::min_element(arr.begin(), arr.end());
    std::vector<int>::const_iterator start = std::min(emin, emax);
    std::vector<int>::const_iterator stop = std::max(emin, emax);
    if ( std::distance(start, stop) < 2 ){
        std::cerr << "Error! No elements between Min and Max!" << std::endl;
        return 1;
    }
    std::cout << "Multiplies of elements between Min and Max = " << std::accumulate(start + 1, stop, 1, std::multiplies<int>()) << std::endl;
    
    return 0;
}
для MSVS нужно std::min() и std::max() заменить соответственно на min() и max().
1
23.04.2010, 02:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2010, 02:30

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Спасибо! Можно еще вопрос: объявлен одномерный динамический массив b размером a, заполнен...

Найти произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами
В одномерном массиве, состоящем из N вещественных элементов, вычислить: произведение элементов...

Найти произведение элементов массива, расположенных между минимальным и максимальным по модулю элементами
ЗАДАНИЕ Б. Сделать по методичке с созданием класса, обьекта и вызовом деструктора и конструктора


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.