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

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

Войти
Регистрация
Восстановить пароль
 
Issenov
0 / 0 / 1
Регистрация: 05.06.2016
Сообщений: 17
#1

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

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

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

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

Для одномерного массива найти cуму индексов наибольших элементов - C++
Задание: Для одномерного массива C(n) найти cуму индексов L наибольших элементов, где 0<=n<=25. Вот рабочий код: // Lab4.cpp:...

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

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

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

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

Найти сумму первых элементов массива, произведение которых не превышает заданного числа М - C++
Имеется последовательность чисел a1, a2, ... ,aN, образована по правилу аi=random(N). Найти сумму первых из них (считая слева направо),...

5
Peoples
1186 / 691 / 434
Регистрация: 06.02.2016
Сообщений: 1,820
Записей в блоге: 14
Завершенные тесты: 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
мановар
1100 / 407 / 90
Регистрация: 12.03.2016
Сообщений: 1,606
Завершенные тесты: 1
20.09.2016, 20:46 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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Эксперт С++
4277 / 1865 / 198
Регистрация: 20.02.2013
Сообщений: 4,997
Записей в блоге: 22
20.09.2016, 21:09 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
мановар, красавец! Просто и со вкусом! Хотя, можно было даже в две строчки:
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Эксперт С++
4277 / 1865 / 198
Регистрация: 20.02.2013
Сообщений: 4,997
Записей в блоге: 22
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++
Помогите с решением контрольных на C++. Пожалуйста. 1. Дан массив D(n), где n≤10, вещественного типа. Разработайте программу,...

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

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

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


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

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

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