Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Issenov
0 / 0 / 1
Регистрация: 05.06.2016
Сообщений: 17
#1

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

19.09.2016, 17:10. Просмотров 334. Ответов 5

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

P.S. Заранее спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2016, 17:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти произведение первых трёх наибольших элементов одномерного массива (C++):

Для одномерного массива найти cуму индексов наибольших элементов
Задание: Для одномерного массива C(n) найти cуму индексов L наибольших...

Для одномерного массива A (n) найти сумму L наибольших элементов, где - 10 <= n <= 45
Для одномерного массива A (n) найти сумму L наибольших элементов, где - 10 &lt;= n...

Найти произведение элементов одномерного числового массива
найти произведение элементов одномерного числового массива

Найти произведение ненулевых элементов одномерного числового массива
Найти произведение ненулевых элементов одномерного числового массива

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

Найти сумму первых элементов массива, произведение которых не превышает заданного числа М
Имеется последовательность чисел a1, a2, ... ,aN, образована по правилу...

5
Peoples
1271 / 776 / 730
Регистрация: 06.02.2016
Сообщений: 2,085
Записей в блоге: 15
Завершенные тесты: 4
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
Manowar
1552 / 484 / 164
Регистрация: 12.03.2016
Сообщений: 1,828
Завершенные тесты: 1
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
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
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
Issenov
0 / 0 / 1
Регистрация: 05.06.2016
Сообщений: 17
22.09.2016, 07:07  [ТС] #5
gru74ik, Спасибо!
Можете подсказать как сделать эту же программу с использованием указателя.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
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
22.09.2016, 08:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2016, 08:04
Привет! Вот еще темы с решениями:

Сумма трёх первых положительных элементов заданного массива
Помогите с решением контрольных на C++. Пожалуйста. 1. Дан массив D(n), где...

Вычисление произведения пяти наибольших по модулю элементов одномерного массива
Помогите плиз решить задачку( Идей вообще ни каких нету(((. Разработайте...

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

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


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

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

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