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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Ann Joker
3 / 3 / 1
Регистрация: 05.10.2011
Сообщений: 86
#1

Максимальное произведение - C++

14.10.2011, 19:28. Просмотров 2785. Ответов 11
Метки нет (Все метки)

Дано N целых чисел. Требуется выбрать из них три таких числа, произведение которых максимально.
Ввод: N - количество чисел в последовательности (3<=N<=100). и N чисел
Выход: три числа, произведение которых максимально.

В проге есть ошибка, но не могу понять какая.

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>
using namespace std;
int main(){
 
    int n,prod=1,max1,max2,max3;
    cin>>n;
    int x[n];
 
    for (int i=0; i<n; i++){
        cin>>x[i];
    }
 
    for(int j=0; j<n; j++){
        for(int k=0; k<n; k++){
            for (int t=0; t<n;t++){
                if(t!=k && j!=t && k!=j && x[j]*x[k]*x[t]>prod){
                    max1=x[j];
                    max2=x[t];
                    max3=x[k];
                    prod=x[j]*x[k]*x[t];
                }
            }
        }
    }
 
    cout<<max1<<" "<<max2<<" "<<max3;
 
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 19:28     Максимальное произведение
Посмотрите здесь:

Определить максимальное и минимальное произведение соседних цифр - C++
Дано целое число N. Определить максимальное и минимальное произведение соседних цифр в числе N.

Найти максимальное произведение двух соседних элементов массива - C++
В заданном одномерном массиве z1,z1...zn.Найти максимальное произведение двух соседних элементов.

Pascal в C++. Максимальное произведение двух элементов для последовательности целых неотрицательных чисел - C++
Здравствуйте! Переведите пожалуйста из Pascal в C++: program N_27; const d = 8; var N: integer; a: array of integer; x:...

В целочисленном массиве найти элемент, произведение которого с предыдущим максимальное среди всех - C++
как бы сам код есть но нужно сделать что бы мы вводили кол-во символов в массиве и сами элементы были случайны #include &lt;iostream&gt; ...

Для каждого натурального числа посчитать максимальное произведение цифр, не превышающее заданное N - C++
Здравствуйте,есть такая задача,вроде простая,но не могу понять алгоритм решения. Есть натуральное число N, для каждого натурального числа...

Дан файл, 2 столбца из чисел, вывести ту строку, произведение элементов которое максимальное - C++
дан файл, 2 столба из чисел, вывести ту строку произведение элементов которое максимальное

Дается последовательность. Найдите максимальное произведение среди всех пар этих чисел - C++
Е. Дается последовательность из N чисел. Найдите максимальное произведение среди всех пар этих чисел. Первая строка входного файла...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
14.10.2011, 19:37     Максимальное произведение #2
error C2466: невозможно выделить память для массива постоянного нулевого размера
Ann Joker
3 / 3 / 1
Регистрация: 05.10.2011
Сообщений: 86
14.10.2011, 19:44  [ТС]     Максимальное произведение #3
a potochnee?
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
14.10.2011, 19:45     Максимальное произведение #4
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
32
#include <iostream>
#include <vector>
using namespace std;
int main(){
 
        int n,prod=1,max1,max2,max3;
        cin>>n;
        std::vector <int> x(n);
 
        for (int i=0; i<n; i++){
                cin>>x[i];
        }
 
        for(int j=0; j<n; j++){
                for(int k=0; k<n; k++){
                        for (int t=0; t<n;t++){
                                if(t!=k && j!=t && k!=j && x[j]*x[k]*x[t]>prod){
                                        max1=x[j];
                                        max2=x[t];
                                        max3=x[k];
                                        prod=x[j]*x[k]*x[t];
                                }
                        }
                }
        }
 
        cout<<max1<<" "<<max2<<" "<<max3;
 
 
        system ("pause");
        return 0;
}
Добавлено через 32 секунды
Цитата Сообщение от Ann Joker Посмотреть сообщение
a potochnee?
размерность массива должна быть константным числом
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 19:46     Максимальное произведение #5
Ann Joker,
так делать нельзя
C++
1
2
3
 int n,prod=1,max1,max2,max3;
        cin>>n;
        int x[n];
надо делать
C++
1
2
3
 int n,prod=1,max1,max2,max3;
        cin>>n;
        int *x=new int[n];
а в конце программы не забыть написать delete [] x;
Ann Joker
3 / 3 / 1
Регистрация: 05.10.2011
Сообщений: 86
14.10.2011, 19:58  [ТС]     Максимальное произведение #6
Цитата Сообщение от aeshes Посмотреть сообщение
так делать нельзя
а я всегда так массив обозначаю.. ошибок не выводило..


Цитата Сообщение от Dani Посмотреть сообщение
std::vector <int> x(n);
кстати, можете объяснить про std.. что он делает



Цитата Сообщение от aeshes Посмотреть сообщение
надо делать
Код C++
1
2
3
4
*int n,prod=1,max1,max2,max3;
* * * * cin>>n;
* * * * int *x=new int[n];
а в конце программы не забыть написать delete [] x;
не понимаю смысла
Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
14.10.2011, 20:02     Максимальное произведение #7
std - это пространство имён.
Если у вас стоит в начале:
using namespace std;
тов строках:
std::...... - использовать не нужно
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 20:05     Максимальное произведение #8
Ann Joker, размер массива, который ты объявляешь в виде int x[n]; должен быть константным выражением, значение которого известно ДО запуска программы, т.е.
C++
1
int x[10]; // правильно
и
C++
1
2
const int n=10;
int x[n]; // правильно
потому что и там и там размер известен сразу

при в воде же размера с клавиатуры размер массива неизвестен до тех пор, пока его не введет пользователь. Соответственно, компилятор не может выделить память под такой массив

хотя некоторые компиляторы такое поведение допускают (не все), это неправильно с точки зрения стандарта

код
C++
1
2
3
int n,prod=1,max1,max2,max3;
        cin>>n;
        int *x=new int[n];
выделяет память под массив х из n элементов динамически. Потом с массивом х можно работать как с обычным, только в конце не забыть очистить память
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.10.2011, 20:06     Максимальное произведение #9
C++
1
2
3
4
5
6
7
8
9
10
for(int j=0; j<n; j++)
                for(int k=j+1; k<n; k++)
                        for (int t=k+1; t<n;t++)
                                if(x[j]*x[k]*x[t]>prod)
                                {
                                        max1=x[j];
                                        max2=x[t];
                                        max3=x[k];
                                        prod=x[j]*x[k]*x[t];
                                }
Ann Joker
3 / 3 / 1
Регистрация: 05.10.2011
Сообщений: 86
14.10.2011, 20:21  [ТС]     Максимальное произведение #10
aeshes, даже если так, есть ошибка и помимо этой..
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 21:58     Максимальное произведение #11
Ann Joker, попробуй так

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
32
33
34
#include <iostream>
using namespace std;
int main(){
 
        int n,prod=1,max1,max2,max3;
        cout<<"Enter n: ";
        cin>>n;
        int *x=new int [n];
        cout<<"Enter "<<n<<" elemets:\n";
        for (int i=0; i<n; i++){
                cin>>x[i];
        }
 
        max1=x[0];
        max2=x[1];
        max3=x[3];
        prod=x[0]*x[1]*x[2];
 
        for(int j=0; j<n-2; j++){
                for(int k=j+1; k<n-1; k++){
                        for (int t=k+1; t<n;t++){
                                if(x[j]*x[k]*x[t]>prod){
                                        max1=x[j];
                                        max2=x[k];
                                        max3=x[t];
                                        prod=x[j]*x[k]*x[t];
                                }
                        }
                }
        }
 
        cout<<"Max product = "<<prod<<", it's a product of "<<max1<<" "<<max2<<" "<<max3<<endl;
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 19:50     Максимальное произведение
Еще ссылки по теме:

Целочисленный массив: найти элементы, произведение которого с предыдущим максимальное среди всех элементов - C++
Задать целочисленный массив. Найти элементы, произведение которого с предыдущим максимальное среди всех элементов. Вывести эти элементы...

Найти максимальное произведение элементов массива, отстоящих друг от друга на расстоянии больше или равном 8 - C++
Задача егэ с4 ,нужно решить с минимальной сложность ,задача такова: у нас дан массив , длинной больше 8 , нужно найти произведение...

В матрице F(4,9) найти произведение элементов , что превышают заданное число B . Вывести матрицу и произведение . - C++
В матрице F(4,9) найти произведение элементов , что превышают заданное число B . Вывести матрицу и произведение .

В матрице найти произведение над главной диагональю,если произведение делится на 3 заменить побочную диагональ 0. - C++
Нужно заменить элементы побочной диагонали нулями,если произведение парных элементов над главной диагональю делится на 3,все сделал кроме...

Найти наибольшее произведение пары элементов массива (при условии, что произведение кратно 8, но не кратно 24) - C++
Помогите пожалуйста) дали задачу, найти наибольшее произведение пары элементов массива,при условии,что произведение кратна 8,но не кратна...


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

Или воспользуйтесь поиском по форуму:
llord
1 / 1 / 0
Регистрация: 14.02.2016
Сообщений: 66
15.03.2016, 19:50     Максимальное произведение #12
#include <iostream>
#include <cmath>
using namespace std;
int main () {
int max1, max2, max3;
cin >> max1 >> max2 >> max3;
int min1, min2;
cin >> min1 >> min2;
if (max1*max2*max3>max1*min1*min2)
cout<< max1 <<" "<< max2 << " "<< max3;
else
cout<< max1 <<" "<< min1 <<" "<< min2;
return 0;
}
Yandex
Объявления
15.03.2016, 19:50     Максимальное произведение
Ответ Создать тему
Опции темы

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