IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Разложение числа
Kolyancz
сообщение 29.12.2008 17:19
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


Нужно написать программу разложения числа на слагаемые.

var
n: integer;
c: array[1..100] of integer;
print: boolean;

const
diapazon:set of byte=[1..40];

procedure find(num,k,len: integer);
const sign: array[boolean] of char = ('+', ' ');
var
i: integer;
begin
if num=0 then begin
print := true;
for i := 1 to pred(len) do
if not (c[i] in diapazon) then print := false;

if print then begin
for i:=1 to len-1 do write(c[i], sign[i = len - 1]); writeln
end;
end
else begin
for i:=1 to k do
if num-i>=0 then begin
c[len]:=i;
find(num-i,i,len+1);
end;
end;
end;
begin
read(n);
find(n,n,1);
end.


Это программа выводит результат от наибольшего слогаемого к наименьшему, а мне надо наоборот от наименьшего к наибольшему.
Пример: число 5.
Есть:
1+1+1+1+1
2+1+1+1
2+2+1
3+1+1
3+2
4+1
5
А надо:
1+1+1+1+1
1+1+1+2
1+1+3
1+2+2
1+4
2+3
5
Помогите, пожалуйста.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"