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

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

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

Разложение натурального числа - C++

20.05.2011, 11:48. Просмотров 1027. Ответов 1
Метки нет (Все метки)

Помогите,пожалуйста, написать программу
задание:написать программу,реализующую жадный алгоритм(минимизация числа слагаемых) для разложения натурального числа в сумму
а)степеней двойки
б)четных степеней двойки
на вход подпется число,на выходе слагаемые в убывающем порядке.
Пример: число 11, на выходе для а) 8 2 1
б) 4 4 1 1 1
вот мой код, но тут ничего не получается
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
#include <iostream> 
#include <conio.h> 
#define N 30 
#define K 30 
using namespace std; 
 
int main(void) 
{ 
    int i,j,k,chislo,M[N],L[K]; 
    k=1; 
    for (i=0;i<N;i++) 
        M[i]=k=k*2; 
    for (i=0;i<N;i++) 
        cout<<M[i]<<endl; 
    cin>>chislo; 
     while (chislo!=0) 
     {for (i=j=0;i<N;i++,j++) 
       if (M[i]>chislo) 
       M[i-1]=L[j]; 
       chislo=chislo-M[i]; 
     } 
     while (L[j]!=0) 
         cout<<L[j]<<endl; 
        
getch(); 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2011, 11:48     Разложение натурального числа
Посмотрите здесь:

Разложение Натурального числа - C++
Привет.Помогите пожалуйста решить задачу. Разложить натуральное число на простые множители (вывести, например, 36=1*2*2*3*3 или 7 = 1*7)....

Разложение натурального числа - C++
Есть такая задача: Составить программу, которая выдаёт представление натурального числа в виде суммы 5 слагаемых, где каждое слагаемое...

Разложение натурального числа на слагаемые - C++
Я не силен в математике, но математику надоело вести математические методы и он начал давать задачки по созданию программ, все бы ничего,...

Разложение натурального числа на простые множители - C++
Выведите разложение натурального числа n &gt; 1 на простые множители. Простые множители должны быть упорядочены по возрастанию и разделены...

Разложение натурального положительного числа на слагаемые? - C++
Помогите... Нужно разложить число на слагаемые... Причем, условия такие: слагаемые должны быть в диапазоне от 1 до 10 (соответственно...

Разложение натурального числа на два простых - C++
Помогите написать программу... нужно разложить натуральное число на два простых всеми возможными способами. вот мои наработки: ...

Разложение на простые множители заданного натурального числа - C++
Составить программу , печатающую разложение на простые мн0жители заданн0го натУральн0го числа n &gt; 0 (другими словами требуется печатать...

Найти разложение натурального числа на сумму квадратов трёх целых чисел - C++
Для заданного натурального N (0 &lt; N ≤ 10^9) вычислить число троек целых чисел (x, y, z), таких, что x^2 + y^2 + z^2 = N. Помогите...

Описать функцию, находящую разложение заданного натурального числа на простые множители - C++
Помогите написать программу, пожалуйста Описать функцию factors(a, n, F), находящую разложение натурального числа a на простые множители....

Нахождение наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n - C++
Помогите с этой задачой: Подпрограммы Составить функцию для нахождения наименьшего нечетного натурального делителя k (k≠1) любого...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.05.2011, 02:44     Разложение натурального числа #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream> 
#include <conio.h> 
#define N 30 
#define K 30 
using namespace std; 
 
int main(void) 
{ 
    int i,k,chislo,M[N]; 
    k=1; 
    for (i=0;i<N;i++) 
    {
        M[i]=k;
        k*=2; 
    }
    for (i=0;i<N;i++) 
        cout<<M[i]<<endl; 
    cin>>chislo; 
    k=chislo;
    // 1-ое разложение
    for(i=0; i<N; i++)
        if(M[i]>chislo)
            break;
    i--;
    while(chislo)
    {
        if(M[i]<=chislo)
        {
            cout<<M[i]<<" ";
            chislo-=M[i];
        }
        i--;
    }
    cout<<endl;
    // 2-ое разложение
    chislo=k;
    for(i=0; i<N; i++)
        if(M[i]>chislo)
            break;
    i--;
    if(i%2!=0)
        i--;
    while(chislo)
    {
        while(chislo>=M[i])
        {
            cout<<M[i]<<" ";
            chislo-=M[i];
        }
        i-=2;
    }
    cout<<endl;        
getch(); 
return 0;
}
Ответ Создать тему
Опции темы

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