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

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

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

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

20.05.2011, 11:48. Просмотров 966. Ответов 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++
C++ Разложение натурального числа
Разложение натурального положительного числа на слагаемые? C++
Вывести все числа от 1 до заданного натурального числа n (рекурсия) C++
C++ Разложение натурального числа на два простых
Для натурального числа определить истинность предиката «все цифры в записи числа равны» C++
C++ Нахождение наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n
C++ Определить все ли числа натурального числа N, представленного в 9ричной системе счислений являются одинаковыми
C++ Найти разложение натурального числа на сумму квадратов трёх целых чисел
Разложение натурального числа на простые множители C++
C++ Для заданного натурального числа N вывести в столбик все совершенные числа меньшие N c++
C++ Описать функцию, находящую разложение заданного натурального числа на простые множители

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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;
}
Yandex
Объявления
21.05.2011, 02:44     Разложение натурального числа
Ответ Создать тему
Опции темы

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