С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 2
Регистрация: 21.09.2011
Сообщений: 18

Генератор разбиения числа

21.09.2011, 19:48. Показов 1770. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа!! а теперь суть, каким образом это должно осуществляться!! когда она запрашивает N я ввожу число это сумма допустимых в диапазоне К(в данном случае 9999999) тоесть, есть К столбиков например я разбиваю число n=10 на k=4 и оно выбивает 1117, 1126 и т.д. когда доходит до 1144 то одно увеличивается 1225, короче в коде видно все! но проблема в том что программа сейчас написана на 7(то есть 9999999) столбиков, и работает только 7, если я введу К 4(то есть 9999) оно не пашет! помогите это осуществить:

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
Program n1; 
 Uses Crt;
 Var x,n,a,b,c,d,e,f,g,h,b1,c1,d1,f1,g1,r,k:integer;
BEGIN
 
 Write (' vedit N ');
 ReadLn (n);
 Write ( 'Vvedit k ' );
 ReadLn (k);
 for x:=1 to k do begin
 b1:=x mod 1000000;
 c1:=b1 mod 100000;
 d1:=c1 mod 10000;
 f1:=d1 mod 1000;
 g1:=f1 mod 100;
 a:=x div 1000000;
 b:=b1 div 100000;
 c:=c1 div 10000;
 d:=d1 div 1000;
 e:=f1 div 100;
 f:=g1 div 10; 
 g:=g1 mod 10;
 
if a+b+c+d+f+g+h=n then
 begin if a<>0 then
 begin if a<=b then
 begin if b<=c then
 begin if c<=d then
  begin if d<=e then
  begin if e<=f then
 begin if f<=g then
 
 
 WriteLn (a,' ',b,' ',c,' ',d,' ',e,' ',f,' ',g);
 
end;
end;
end;
end;
end;
end;
end;
end;
     ReadKey;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2011, 19:48
Ответы с готовыми решениями:

Разработать программу, которая находит все разбиения заданного числа
Программу надо написать с помощью процедур.

Алгоритм разбиения числа на простые слагаемые
Есть код для разложения числа на простые слагаемые. Если число большое, то количество слагаемых может быть слишком много. Как ввести...

Алгоритм разбиения числа на простые слагаемые
Помогите написать алгоритм разбиения числа на простые слагаемые. Пример Ввод: 21 Вывод: 19+2 17+2+2 13+7 13+5+2 ...

7
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
21.09.2011, 21:18
Нужен в принципе другой алгоритм, с массивом цифр.
0
0 / 0 / 2
Регистрация: 21.09.2011
Сообщений: 18
21.09.2011, 21:41  [ТС]
хотя бы дайте идеи как его укоротить!! а то у меня кроме этого ничего в фантазию не пришло!! Ну даже если не уменьшать размеры, то как замутить чтобы он был полностью рабочий? Как усовершенствовать?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
21.09.2011, 21:48
Для начала нужно точно и подробно изложить суть задачи.
1
0 / 0 / 2
Регистрация: 21.09.2011
Сообщений: 18
21.09.2011, 22:20  [ТС]
Да суть задачи и не понятна нужно число n разложить на k составляющих (например 10, на 4 составляющих) и первое число не должно быть больше второго, или меньше или равно!! вот и все!! Для примера разложу число 10 на 4:
1117
1126
1135
1144
1225
1234
1333
2224
2233
вот и все! Это и есть суть задачи!)
0
 Аватар для Small Lamer
143 / 143 / 141
Регистрация: 05.04.2011
Сообщений: 270
22.09.2011, 13:59
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
var n,k:longint;
    a:array[1..10000] of longint;
 
procedure rec(x,p,v:longint);
var i:longint;
begin
 
    if ((x<>0) and (v<=k)) or ((x=0) and (v>k)) then begin
        if (x=0)and(v>k) then begin
            for i:=1 to k do 
                write(a[i],' ');
            writeln;
        end
        else
        for i:=p to n do begin
            a[v]:=i;
            rec(x-i,i,v+1);
        end;
    end;
    
end;
 
begin
 
    readln(n,k);
    rec(n,1,1);
 
end.
Добавлено через 1 минуту
Можно еще чуть-чуть ускорить, но мне лень.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
22.09.2011, 14:21
Вот как-то скопипастил аналогичный рекурсивный алгоритм.
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
uses crt;
var
  q : integer;
  n : integer;
 
  arr : array[1 .. 10] of integer;
 
procedure p(start, count : integer);
var i, s : integer;
begin
  if count > q then
  begin
    s := 0;
    for i := 1 to q do s := s + arr[i];
    if s = n then
    begin
      for i := 1 to q do write(arr[i]:3);
      writeln;
    end;
  end
  else
  begin
    for i := start  to n do
    begin
      arr[count] := i;
      p(arr[count], count + 1);
    end;
  end;
end;
 
begin
write('n=');readln(n);
write('q=');readln(q);
p(1, 1);
end.
А вот не рекурсивный что-то не получился...
1
0 / 0 / 2
Регистрация: 21.09.2011
Сообщений: 18
22.09.2011, 17:13  [ТС]
Благодарю мужики))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2011, 17:13
Помогаю со студенческими работами здесь

Написать функцию для разбиения числа на числа
Помогите написать функцию для разбиения числа на числа! Например ввели 12345 а должна вывести 1 2 3 4 5

Разбиения числа
Здравствуйте, уважаемые форумчане. Требуется помощь с кодом. Имеется код, который должен находить все разбиения числа. Например: если n =...

Разбиения натурального числа N
Помогите с задачей пожалуйста Дано натуральное число n. Напечатать все его разбиения на целые положительные слагаемые. Разбиения,...

разбиения заданного числа
Разработайте программу, которая находит все разбиения заданного числа.

Реализация разбиения числа с Динам. Прогр
Доброго времени суток. Нужна помощь: как с помощью динамического программирования реализовать решение такой вот задачи: &quot;найти...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru