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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
**KATY
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
#1

Вычислить произведение элементов массива по модулю - C++

12.02.2012, 15:28. Просмотров 1150. Ответов 5
Метки нет (Все метки)

Дан одномерный массив состоящий из n целых чисел, надо: вычеслить произведение элементов по модулю, которые находятся между максимальным элементом и минимальным ( если возможно с обяснениями)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 15:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить произведение элементов массива по модулю (C++):

Одномерный массив ( вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами) - C++
Необходимо вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами...

Вычислить произведение элементов массива, расположенных после максимального по модулю - C++
в одномерном массиве состоящем из n вещественных элементов вычислить произведение элементов расположенных после максимального по модулю...

Вычислить произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами - C++
1 задача. Пусть дан одномерный массив A(N). Вычислить произведение элементов массива, расположенных между максимальным и минимальным по...

Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами - C++
Всем привет,помогите люди добрые нужно найти:Произведение элементов массива, расположенных между максимальным по модулю и минимальным по...

Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами - C++
Определить массив A (m и n константы), заполнить его случайными числами и выполнить следующие вычисления. Результаты выполнения задания...

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

5
renald
35 / 35 / 2
Регистрация: 11.02.2012
Сообщений: 105
12.02.2012, 16:29 #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
#include <cstdlib>
#include <cmath>
#include <iostream>
using namespace std;
 
int main() {
    int n=rand()%30;            //берем случайное кол-во элементов от 0 до 30 
    int min=100, max=-100;      //пременные миним и макс
    int n_max=0, n_min=0;       //индексы минимума и максимума
    int P=1;                    //переменная произведения
    int a[n];                   //массив
    
    for (int i=0; i<n; i++) a[i]=rand()-50; //заполнение случ. числами
    
    for (int i=0; i<n; i++) 
        if (a[n]<min) { min=a[n]; n_min=n;} // нахождение максим и его индекса
            
    for (int i=0; i<n; i++) 
        if (a[n]>max) { max=a[n]; n_max=n;} // нахождение миним и его индекса
    
    if (n_min < n_max)      // максимум в массиве раньше стоит 
        for (int i=n_min; i<n_max; i++) P=P*a[i]; // расчет произ
    else                    // или позже в массиве
        for (int i=n_max; i<n_min; i++) P=P*a[i]; // расчет произ
    
    cout << abs(P) << endl; // модуль произведения
}
Добавлено через 54 секунды
Цитата Сообщение от **KATY Посмотреть сообщение
произведение элементов по модулю
это модуль произведения
1
**KATY
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
12.02.2012, 16:38  [ТС] #3
можно еще вопрос, у нас в инклуде <stdlib.h> так пишется, а у вас <cstdlib>
есть разница?
0
renald
35 / 35 / 2
Регистрация: 11.02.2012
Сообщений: 105
12.02.2012, 17:36 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пиши как хочешь
<stdlib.h> это по старому для С, а
<cstdlib> это по новому для С++

Добавлено через 59 секунд
Работать будет в любом случае

Добавлено через 54 минуты
Сори, первый алгоритм с некоторыми ошибками
Вот правильный
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
#include <cstdlib>
#include <cmath>
#include <iostream>
using namespace std;
 
int main() {
        int n=rand()%10+10;            //берем случайное кол-во элементов от 10 до 20 
        int min=100, max=-100;          //пременные миним и макс
        int n_max=0, n_min=0;           //индексы минимума и максимума
        int P=1;                                        //переменная произведения
        int a[n];                                       //массив
        
        for (int i=0; i<n; i++) a[i]=rand()%50-25; //заполнение случ. числами
        
        for (int i=0; i<n; i++) 
                if (a[i]<min) { min=a[i]; n_min=i;} // нахождение миним и его индекса
                        
        for (int i=0; i<n; i++) 
                if (a[i]>max) { max=a[i]; n_max=i;} // нахождение макс и его индекса
        
        if (n_min < n_max)      // максимум в массиве раньше стоит 
                for (int i=n_min+1; i<n_max; i++) P=P*a[i]; // расчет произ
        else                                    // или позже в массиве
                for (int i=n_max+1; i<n_min; i++) P=P*a[i]; // расчет произ
        
        for (int i=0; i<n; i++) cout << a[i] << "  "; //вывод массива
        cout << endl << abs(P) << endl; // модуль произведения
}
1
**KATY
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
12.02.2012, 17:49  [ТС] #5
Spasibo bol'shoe
0
Vergil111
31 / 31 / 6
Регистрация: 30.11.2010
Сообщений: 81
12.02.2012, 20:29 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
С использованием stl и лямбда-функций это будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> test((istream_iterator<int>(cin)), istream_iterator<int>());
    cout << accumulate(max_element(test.begin(), test.end())+1, min_element(test.begin(), test.end()), 1, [](const int& total, const int& right){return total*abs(right);}) << endl;
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 20:29
Привет! Вот еще темы с ответами:

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

Найти произведение элементов массива, которые между максимальным по модулю и минимальным по модулю элементами - C++
В одномерном массиве, состоящем из n действительных элементов, найдите 2) произведение элементов массива, расположенных между...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
12.02.2012, 20:29
Ответ Создать тему
Опции темы

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