Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
1

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

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

Author24 — интернет-сервис помощи студентам
Дан одномерный массив состоящий из n целых чисел, надо: вычеслить произведение элементов по модулю, которые находятся между максимальным элементом и минимальным ( если возможно с обяснениями)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2012, 15:28
Ответы с готовыми решениями:

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

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

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

Вычислить произведение модулей элементов массива, расположенных перед минимальным по модулю элементом
В одномерном целочисленном массиве (размер массива не больше 20 и значения его элементов вводить с...

5
35 / 35 / 8
Регистрация: 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
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
12.02.2012, 16:38  [ТС] 3
можно еще вопрос, у нас в инклуде <stdlib.h> так пишется, а у вас <cstdlib>
есть разница?
0
35 / 35 / 8
Регистрация: 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
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 30
12.02.2012, 17:49  [ТС] 5
Spasibo bol'shoe
0
31 / 31 / 16
Регистрация: 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
12.02.2012, 20:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2012, 20:29
Помогаю со студенческими работами здесь

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

Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами
Добрый день форумчане! Прощу помощи, задача такова: В одномерном массиве, состоящем из n...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru