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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Stans
78 / 54 / 3
Регистрация: 05.12.2009
Сообщений: 435
#1

Найти максимальную сумму чисел, произведение которых не превышает заданного числа. - C++

25.10.2011, 18:56. Просмотров 1313. Ответов 9
Метки нет (Все метки)

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

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

Найти в массиве количество четных чисел, сумма цифр в которых не превышает заданного числа P - C++
Найти количество четных чисел, сумма цифр в которых не превышает заданного числа P. При вводе Р=11 все считает правильно , но стоит...

Для заданного четного числа вычислить сумму, для нечетного произведение чисел от 1 до заданного - C++
c++ дано число вводится с клавиатуры, если оно четное, то ввести сумму с 1 до n. Если нечетное — произведение от 1 до n. вывести на экран

Из заданного промежутка найти все числа произведение цифр которых равно заданному - C++
Пользователь вводит х, a, b. Из промежутка от a до b найти все числа, произведение цифр которых по модулю дает х. #include...

Подсчитать количество слов, длина которых не превышает заданного числа - C++
Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть...

Найти сумму и произведение натуральных чисел, не превышающих заданного значения N - C++
Разработайте графическую схему алгоритма и напишите программу для решения следующей задачи: найти сумму и произведение натуральных...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
25.10.2011, 20:00 #2
Если я все правильно понял, то вводим массив (в этой программе из 10 элементов). Если ппервый элемент больше введенного (заданного числа), то выбивает ошибку. Если первое меньше введенного, то идет правее по массиву, пока произведение не привысит заданное число.
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
35
36
37
38
39
40
41
#include <iostream>
 
using namespace std;
 
int main()
{
 
    int massiv[10];
 
    int a;
 
    cout << "Vvedite massiv" << endl;
 
    for(int i = 0; i < 10; i++)
        cin >> massiv[i];
 
    cout << endl << "Vvedite chislo" << endl;
 
    cin >> a;
 
    int umnog = 1, summa = 0;
 
    if(massiv[0] < a){
        for(int i = 0; i < 10; i++){
            if(umnog < a){
                umnog *= massiv[i];
                summa += massiv[i];
            }
            else{
                summa = summa - massiv[i - 1];
                break;
            }
        }
    }
    else{
        cout << "Oshibka :-(((";
    }
    cout << summa;
 
    return 0;
}
0
Stans
78 / 54 / 3
Регистрация: 05.12.2009
Сообщений: 435
25.10.2011, 21:25  [ТС] #3
Нет, условие немного посложнее.
Вводим массив. Перебираем все возможные комбинации перемножения элементов массива. Из всех этих комбинаций выделяем те, произведение которых не превышает заданное число. Потом из этих комбинаций находим ту, сумма элементов которой, наибольшая. Вот так.
У меня проблема с тем, как перебрать все эти комбинации. Комбинация может состоять, например, из 2-го, 5-го и 8-го элементов.
0
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
25.10.2011, 22:07 #4
Ну я сделал как мог
Интересно будет посмотреть на решение задачи
Если кто может - решите - вас просят уже двое
0
Rampagery
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 6
26.10.2011, 00:44 #5
x-ограничитель 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// acdfg.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<cmath>
using namespace std;
int j;const int N=100;
bool condition(int a,int b,double x)
{
    return(a*b<=x)?true:false;
}
int dob(int *m,int n,double x,int MAX)
{
static int dob,l;static int count,summa;
for(int i=0;i<n;i++)
{
    dob=m[i];
    l=i;
    while(l<n-1)
    {
     dob=m[i];summa=m[i];count=1;
      for(j=l+1;j<n;j++)
      {
        if(condition(dob,m[j],x)==true)
           {
               dob*=m[j];summa+=m[j];count++;
           }
      }
      if(summa>=MAX&&count>=2){MAX=summa;}
      l++;
    }
}
return MAX;
}
int _tmain(int argc, _TCHAR* argv[])
{
    int m[N],n,dobb=1,summa=0,maxim;double x;
    cout<<"Enter n\n";
    cin>>n;
    cout<<"Enter x\n";
    cin>>x;
    cout<<"Enter elements\n";
    for(int i=0;i<n;i++)
        cin>>m[i];
    dobb=m[0];summa=m[0];
    for(int i=1;i<n;i++)
        if(condition(dobb,m[i],x)==true){dobb*=m[i];summa+=m[i];}
    maxim=summa;
    cout<<dob(m,n,x,maxim)<<endl;
    getch();
    return 0;
}
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
26.10.2011, 05:21 #6
у меня так получилось
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 "stdafx.h"
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
 
int main(){
    const int size = 10;
    int arr[size] = {10, 5, 2, 12, 30, 11, 4, 8, 1, 6};
    int num, sum = 0, num1, num2;
 
    cout << "Enter number: " << endl;
    cin >> num;
    for(int i = 0; i<size-1; ++i){
        for(int j = i+1; j < size; j++ ){
            if((arr[i]*arr[j]) < num && (arr[i]+arr[j]) > sum){
                num1 = arr[i];
                num2 = arr[j]; 
                sum = num1+num2;
            }
        }
    }
    cout << "Number 1 : "<< num1 << endl;
    cout << "Number 2 : "<< num2 << endl;
    cout << "Sum : " << sum << endl;
    system("pause");
 
    return 0;
}
0
Rampagery
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 6
26.10.2011, 13:48 #7
greeezz, а кто вам сказал што числа положительные???если сума будет меньша 0 то ваша программа накроетса...да и перечислены не все варианты.
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
26.10.2011, 16:46 #8
Rampagery, для работы с отрицательными числами предполагаю что вполне достаточно внести простое изменение.

замените строчку
C++
1
if((arr[i]*arr[j]) < num && (arr[i]+arr[j]) > sum){ .... }
на
C++
1
if(((arr[i]*arr[j]) < num && (arr[i]+arr[j]) > sum) || ((arr[i]*arr[j]) < num && sum == 0)){ .... }
буду благодарен за ваши комментарии.
0
Rampagery
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 6
26.10.2011, 20:35 #9
даже не смотря на ето...у вас не все варианты перчислены далеко.
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
26.10.2011, 21:31 #10
Цитата Сообщение от Rampagery Посмотреть сообщение
даже не смотря на ето...у вас не все варианты перчислены далеко.
простите не понял. о каких вариантах вы говорите?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 21:31
Привет! Вот еще темы с ответами:

Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М - C++
Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. если таких нет,...

В матрице А (mxn) найти найти сумму элементов по колонкам, значения которых по модулю меньше заданного числа К - C++
a) задать значения элементов массива при объявления переменных; b) значения элементов массива ввести с клавиатуры....

Найти сумму элементов массива значения которых меньше заданного числа - C++
Дан одномерный массив 6 элементов. Найти сумму элементов массива значения которых меньше 0.25 Массив x-{3.5,-6.3,2.1,0.1,5.1,-2.1}

Сжать массив, удалив из него все элементы. модуль которых не превышает, заданного числа. - C++
Дан одномерный массив. Сжать массив, удалив из него все элементы. модуль которых не превышает, заданно 20 числа а.


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

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

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