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

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

Восстановить пароль Регистрация
 
bbr
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 42
23.04.2010, 00:39     Найти произведение элементов массива, расположенных между максимальным и минимальным элементами #1
Помогите, пожалуйста.
Как найти произведение элементов массива, расположенных между максимальным и минимальным
элементами?

Заранее спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2010, 00:39     Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Посмотрите здесь:

Найти произведение элементов массива, расположенных между минимальным и максимальным по модулю элементами C++
C++ Найти сумму отрицательных элементов массива
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
Одномерный массив. Найти произведение элементов массива, расположенных между максимальным и минимальным элементами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,423
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;
}
bbr
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 42
23.04.2010, 01:21  [ТС]     Найти произведение элементов массива, расположенных между максимальным и минимальным элементами #3
огромное спасибо ^_^
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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().
Yandex
Объявления
23.04.2010, 02:30     Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Ответ Создать тему
Опции темы

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