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

Разложение на слагаемые - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Палиндром... http://www.cyberforum.ru/cpp-beginners/thread352095.html
Палиндром ведь это слова одинаково читающееся в обоих направениях. Помогите разобрать метод?! string palindrome(string word){ //boolean which return true if words are polindrome else return false bool palindrome; //check for a match first symbol with last symbol etc. for (int i=0; i < word.length()-1; i++){ if (tolower(word) != tolower(word)){ palindrome =...
C++ на С++ Черно-белая графика Нужно решить на С++ Каждый элемент квадратной матрицы размеренности N x N равен нулю, либо единице. Найдите количество «островов», образованных единицами. Под «островом» понимается группа единиц (либо одна единица), со всех сторон окруженная нулями (или краями матрицы). Единицы относятся к одному «острову», если из одной из них можно перейти к другой «наступая» на единицы, расположенные в... http://www.cyberforum.ru/cpp-beginners/thread352088.html
Вопрос по односвязному списку. C++
Ребят у меня такой вопрос! Нам в универе дали задание реализовать односвязный список на базе массива с индексными указателями. Все хорошо, я знаю как сделать обычный список!А вот дополнение через массив указателей не много не догоняю! Обьясните пожалста!
Буквенные сочетания. C++
Всем привет. Озадачился. Есть 2 регистра англ. алфавита, хочу вывести все 2х буквенные сочетания верхнего и нижнего регистра и соответственно нижнего с верхним и наоборот, на выходе 4 массива сочетаний. Хотел сначала задать unsigned char Eng_Up={'A', 'B',.......}, но потом подумал как преобразовать на выходе именно в строку 'AA', 'AB'...., поэтому начал задавать массивы строк и уперся в стену...
C++ Аффинные пространства http://www.cyberforum.ru/cpp-beginners/thread352054.html
Помогите пожалуйста, у кого - нибудь есть готовая программа под Visual Studio 2008 реализации операций с аффинными элементами аффинного пространства или посоветовать книгу где есть эта программа?
C++ Построение бинарного дерева из строки Доброго времени суток, уважаемые. Хотел бы спросить у вас спросить совета относительно реализации следующей проблемы: Задано арифметическо-логическое выражение (к примеру, (A+B-7*(3+C)>12)OR(B-A+19<7)), которое нужно перевести в дерево. Собственно интересует меня не код программы, а возможные алгоритмы решения данной задачи - т.е. последовательность построения дерева и добавления узлов. ... подробнее

Показать сообщение отдельно
XemyL
1 / 1 / 0
Регистрация: 23.03.2011
Сообщений: 14

Разложение на слагаемые - C++

16.09.2011, 10:19. Просмотров 2139. Ответов 5
Метки (Все метки)

На входе у нас число (нат, пол) которое нужно разложить и ожидаймое количество слагаймых
алгоритм решения таков..выделяем место для одномерного массива, заполняем его 1-ми
увеличиваем последний елемент, пока сумма всех елементов не достигнет значения числа, которое мы разлогаем..выводим, уменшаем последний елемент на 1, при етом увеличивае предпоследний на 1 и т.д., но что бы выполнялись условия - следующий елемент (слагаймое) был не менше предущего и не больше остатка от разницы между суммой и предущим елементом. вывод тогда, когда остаток равный 0.
Нужно сделать программу БЕЗ рекурсии, но что то не доходит до меня как правильно наложить условия, в данном виде прога определяет только два слагаймые, при большем количестве идет зацыкливантие, помогите плс)


Не по теме:


Ето то, что смог делать на паскале, но и сишный вариант подойдет

Pascal
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program RSlag;
uses crt;
var
   q: word;
   n: word;
   p, i: word;
   arr: array[1..1000] of word;
 
function Summ: boolean;
var
   i, sum: word;
begin
   sum := 0;
   for i := 1 to q do
   begin
      sum := sum + arr[i];
   end;
   if sum = n then Summ := true
   else Summ := false;
end;
 
procedure Printf;
var
   i: word;
begin
   for i := 1 to q do
      write(arr[i], ' ');
   writeln;
   readln;
end;
 
begin
   writeln('n: ');
   readln(n);
   writeln('q: ');
   readln(q);
   for i := 1 to q do
      arr[i] := 1;
   
   i:=1;
    if Summ <> true then
      repeat
         inc(arr[q])
      until Summ = true;
   printf;
   p := q;
   while Summ = true do
    begin
     if p <= i then 
      begin
      dec(p);
      inc(i);
      end;
     
      while (arr[p] >= arr[p - 1]) and (arr[p] <= (n - arr[p - 1])) do
       begin
        Printf;
        dec(arr[p]);
        inc(arr[p - i]);  
       end;
      if (arr[p] = arr[p - 1]) and (arr[p] = (n - arr[p - 1])) then
       begin
       dec(p);
       inc(i);
       end;
 
    end;
 
end.

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