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

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

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

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

14.10.2011, 19:28. Просмотров 2630. Ответов 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++ В матрице найти произведение над главной диагональю,если произведение делится на 3 заменить побочную диагональ 0.
C++ Дается последовательность. Найдите максимальное произведение среди всех пар этих чисел
В матрице F(4,9) найти произведение элементов , что превышают заданное число B . Вывести матрицу и произведение . C++
Целочисленный массив: найти элементы, произведение которого с предыдущим максимальное среди всех элементов C++
C++ Определить максимальное и минимальное произведение соседних цифр
C++ Дан файл, 2 столбца из чисел, вывести ту строку, произведение элементов которое максимальное
Для каждого натурального числа посчитать максимальное произведение цифр, не превышающее заданное N C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1264 / 622 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 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
437 / 200 / 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
437 / 200 / 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++
4220 / 2194 / 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
437 / 200 / 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++
Pascal в C++. Максимальное произведение двух элементов для последовательности целых неотрицательных чисел C++
Найти наибольшее произведение пары элементов массива (при условии, что произведение кратно 8, но не кратно 24) C++
C++ В целочисленном массиве найти элемент, произведение которого с предыдущим максимальное среди всех

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

Или воспользуйтесь поиском по форуму:
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     Максимальное произведение
Ответ Создать тему
Опции темы

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