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

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

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

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

14.10.2011, 19:28. Просмотров 2899. Ответов 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++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 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++
4225 / 2199 / 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;
}
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 19:50
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.03.2016, 19:50
Ответ Создать тему
Опции темы

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