0 / 0 / 1
Регистрация: 05.06.2016
Сообщений: 17
1

Найти произведение первых трёх наибольших элементов одномерного массива

19.09.2016, 17:10. Показов 1597. Ответов 5

Написать программу одномерного массива.
Условие:
Найти произведение первых трёх наибольших элементов вектора С(15).

P.S. Заранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2016, 17:10
Ответы с готовыми решениями:

Найти произведение первых трех элементов массива, больших заданного числа
В массиве а1, а2, ..., а25 найти произведение первых трех элементов, больших чем 5.

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

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

Найти произведение первых трех отрицательных элементов
Уважаемая администрация прошу написать программу на паскале Ввести одномерный массив А целых...

5
Эксперт С++
1623 / 953 / 782
Регистрация: 06.02.2016
Сообщений: 2,449
Записей в блоге: 30
19.09.2016, 17:45 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
28
29
30
31
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
    srand(time(nullptr));
    vector<double>val;
    for(size_t i=0; i!=15; i++) {
        val.push_back(rand()%20);
    }
    for(vector<double>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<*iter<<" ";
    }
    cout<<endl;
    double a=val[0];
    double b=val[1];
    double c=val[2];
    for(int i=0; i<val.size(); i++)
        if(val[i]>=a || val[i]>=b || val[i]>=c) {
            if(a<=b && a<=c)
                a=val[i];
            else if(b<=c)
                b=val[i];
            else
                c=val[i];
        }
    cout<<a<<"  "<<b<<"  "<<c<<endl;
    cout<<a*b*c<<endl;
    return 0;
}
1
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.09.2016, 20:46 3
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

C++
1
2
3
sort(val.begin(), val.end());
    double proizv_3_max = val[12] * val[13] * val[14];
    cout << "Proizvedenie = " << proizv_3_max << endl;
1
Модератор
Эксперт CЭксперт С++
5106 / 2291 / 333
Регистрация: 20.02.2013
Сообщений: 5,645
Записей в блоге: 19
20.09.2016, 21:09 4
Лучший ответ Сообщение было отмечено Issenov как решение

Решение

мановар, красавец! Просто и со вкусом! Хотя, можно было даже в две строчки:
C++
1
2
    sort(val.begin(), val.end());
    cout << "Product is: " << val[12] * val[13] * val[14] << endl;
1
0 / 0 / 1
Регистрация: 05.06.2016
Сообщений: 17
22.09.2016, 07:07  [ТС] 5
gru74ik, Спасибо!
Можете подсказать как сделать эту же программу с использованием указателя.
0
Модератор
Эксперт CЭксперт С++
5106 / 2291 / 333
Регистрация: 20.02.2013
Сообщений: 5,645
Записей в блоге: 19
22.09.2016, 08:04 6
Issenov, там они уже используются. Итераторы, называются. Вот один:
C++
1
val.begin()
вот ещё один:
C++
1
val.end()
Подробнее про итераторы с просторов сети:
Итераторы
Итератор - это абстракция, которая ведет себя, как указатель с некоторыми ограничениями или без них, то есть, сохраняет все свойства своего прародителя. Указатель - это тоже итератор. В действительности, итераторы, в большинстве случаев, это объектные обертки указателей. Вот как примерно может выглядеть внутреннее устройство итератора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class iterator
{
    t* pointer;
    
public:
    t* getpointer ()
    {
        return this->pointer;
    }
    
    void setpointer (t* pointer)
    {
        this->pointer = pointer;
    }
    // ...
};
Но итератор представляет собой более высокий уровень абстракции, чем указатель, поэтому утверждение, что итератор - это указатель в некоторых случаях может быть неверно. А вот обратное будет верно всегда.

Итераторы обеспечивают доступ к элементам в коллекции

Итераторы для конкретного класса коллекции определяются внутри класса этой коллекции. В STL существует три типа итераторов: iterator, reverse_iterator, и random access iterator. Для обхода коллекции от меньшего индекса к большему, используются обычные или forward итераторы. Для обхода коллекции в обратном направлении используются reverse итераторы. random access iterator являются итераторами, которые могут обходить коллекцию как вперед, так и назад.
Issenov, или Вам именно сырые сишные указатели нужны?

Добавлено через 34 минуты
Issenov, вот с простым сишным массивом (указатели присутствуют!):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    const int ARR_SIZE = 5;
    
    int arr[ARR_SIZE];
    
    for ( int * ptr = arr; ptr != arr + ARR_SIZE; ++ptr )
    {
        std::cout << "Enter an ineger: ";
        std::cin >> *ptr;
    }
 
    std::sort( std::begin( arr ), std::end( arr ) );
    std::cout
        << "The product of three most biggest elements of the array is: "
        << arr[ARR_SIZE - 1] * arr[ARR_SIZE - 2] * arr[ARR_SIZE - 3];
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2016, 08:04
Помогаю со студенческими работами здесь

Найти сумму первых трех и последних трех элементов массива
Есть одномерные материальные массивы A=i]l, B=i]m, C=i]n - вводятся с клавиатуры. Создать...

Найти сумму трёх наибольших из элементов массива
Добрый день, нужна помощь в написании программного кода. Вот задание: Ввести массив из десяти...

Рассчитать и вывести произведение первых трех положительных элементов заданного массива
Всем привет . Наслышан о сайте,возможно кто-то поможет ) 1.Рассчитать и вывести произведение...

Pascal. Дан массив целых чисел из 14 элементов. Найти произведение первых трех отрицательных элементов
Дан массив целых чисел из 14 элементов. Найти произведение первых трех отрицательных элементов


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru