Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для xkrotovx
1 / 1 / 3
Регистрация: 30.03.2011
Сообщений: 30

Перебор цифр в массиве

15.10.2012, 09:25. Показов 1137. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Задача состоит в том, чтобы перебирать цифры в массиве.
Например переменная m отвечает за длину одномерного массива, переменная k за максимальную цифру в этом массиве.
Возьмем m=3,k=3, тогда вывод будет выглядеть так:
111
112
113
121
122
123
131
132
133
211
212
213
221
222
223
231
232
233
311
312
313
321
322
323
331
332
333
Если возьмем m=3,k=2, то:
111
112
121
122
211
212
221
222
Переменные могут задаваться как в процессе программы, так и в виде константы.
Заранее большое спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2012, 09:25
Ответы с готовыми решениями:

Количество цифр X в одномерном массиве
как определить количество цифр X в одномерном массиве? помогите пожалуста

Исключение лишних повторяющихся цифр в массиве
Подскажите, пожалуйста, алгоритм(код), с помощью которого можно в целочисленном массиве исключить лишние повторяющиеся цифры. То есть...

В символьном массиве рассчитать количество цифр
Нужно ввести символьный массив из 8-ми элементов и найти количество цифр в этом массиве

3
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
15.10.2012, 14:42
xkrotovx, а если, например, m=4, a=2? Они вразброс там или что?

Добавлено через 12 минут
Во всяком случае, это сочетания. Во нагуглил код, может поможет:
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
Program Generator_combination;
{Генератор сочетаний} 
const 
 n=5; k=4; n1=100;
type 
 t=array[1..n1] of integer; 
var 
 x,min,max : t; 
 i,j,r:integer; 
 
begin // задаются начальные значения max,min,x
for j:=1 to k do 
 begin 
 max[j]:=n-j+1;
 min[j]:=k-j+1;
 x[j]:=min[j] 
 end; 
 
writeln('Сочетания из ',n,' эл-тов по ', k, ' элементов'); 
 
while i<=k do 
 begin 
 for j:=k downto 1 do write(x[j], ' '); writeln; 
 r:=r+1; i:=1; 
 while (i<=k) and (x[i]=max[i]) do i:=i+1; 
 if i<=k then x[i]:=x[i]+1;
 for j:=i-1 downto 1 do 
 begin 
 min[j]:= x[j+1]+1; 
 x[j]:=min[j] 
 end 
 end; 
writeln('Общее число сочетаний равно r = ', r)
end.
0
 Аватар для xkrotovx
1 / 1 / 3
Регистрация: 30.03.2011
Сообщений: 30
15.10.2012, 15:12  [ТС]
Если m=4 a, k=2, то:
1111
1112
1121
1122
1211
1212
1221
1222
2111
2112
2121
2122
2211
2212
2221
2222

Добавлено через 4 минуты
BumerangSP, в той программе, что вы привели выводится числа от 1 до n, с вычеркиванием (n-k) элементов.
Нет это не то.

Добавлено через 1 минуту
Мне нужно что бы программа перебирала цифры примерно как брутер.

Добавлено через 7 минут
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
const r=2000;
      n=5;
      m=4;
      k=2;
var i,j,s,t,q,b,schet,schet1,l:integer;
    a:array [1..r] of integer;
    f,f1,f2,f3:string;
   
function summ:integer;
var i1,s1,q1:integer;
begin
s1:=0;
for i1:= 1 to m do
begin
str(q,f3);
val(f3[i1],q1,t);
s1:=s1+q1;
end; 
summ:=s1;
end;
begin
{readln(s);}
for s:= 1 to r do
begin
 
for l:= 1 to r do a[l]:=0;
t:=s;
q:=s;
i:=k+1;
schet:=r+1;
while t>=i do 
begin
dec(schet);
t:=t mod i;
a[schet]:=t;
q:=trunc(q/i);
t:=q;
end;
 
a[schet-1]:=q;
f1:='';
f:='';
 
for i:= 1 to r do
begin
str(a[i],f);
f1:=f1+f;
end;
val(f1,q,t);
{if (q<100) and (q>) then q:=0;}
str(q,f2);
if (length(f2)<m) or (length(f2)>=m+1) then q:=0;
str(q,f1);
b:=0;
b:=pos('0',f1);
if b=0 then
            begin
            val(f1,q,t);
            writeln(q);
            if summ =n then inc(schet1);
            end;
b:=0;
 
end;
 
writeln(schet1);
end.
Вот вариант моей программы, но в ней куча ошибок, и она не со всеми значениями переменных работает, и вообще очень сильно грузит комп.
в этой программе я переводил из десятичных чисел в систему с основанием k+1, и вообщем с первого взгляда видно что это просто индусский код =)
0
 Аватар для xkrotovx
1 / 1 / 3
Регистрация: 30.03.2011
Сообщений: 30
17.10.2012, 22:23  [ТС]
Задача была такая:
Из тетрадки по арифметике вырезают полоску длиной в n клеток, и разрезают на m частей, причем кол-во
клеток в этих частях не должно превышать k. Сколько таких разрезаний можно сделать?
Просто оставлю доведенный до ума код тут.

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
const 
      n=4;
      m=2;
      k=2;
var i,j,schet,m1,m2,x5,min1,max1,mmm:integer;
    s,s2,min,max:string;
    znach,pp:integer;
 
function prov(y3:string):boolean;
var i5:integer;
    x3:string;
begin
prov:=true;
i5:=pos('0',y3);
if i5>0 then prov:=false;
end;
 
function perevod(q,w:integer):string;
var t,t1,pw,pw1:integer;
    s,s1:string;
begin
t:=w;
t1:=w;
while t1>=q do
begin
t:=t mod q;
t1:=trunc(t1/q);
str(t,s);
s1:=s+s1;
t:=t1;
end;
str(t,s);
s1:=s+s1;
perevod:=s1;
end;
 
function stepen(x2,y2:integer):integer;
var x3,i3:integer;
begin
x3:=1;
for i3:= 0 to y2 do
begin
x3:=x3*x2;
end;
stepen:=x3;
end;
 
function back_perevod(x1:string):integer;
var i2,ppp:integer;
    chislo,chislo1:real;
    st:string;
    a:array [0..m-1] of integer;
begin
for i2:= 0 to m-1 do
begin
val(x1[i2+1],a[(m-1)-i2],ppp);
chislo:=a[(m-1)-i2]*power((k+1),i2);
chislo1:=chislo1+chislo;
end;
 
back_perevod:=round(chislo1);
end;
 
function summ(x1:string):integer;
var i1,p,qw,p1:integer;
begin
for i1:= 1 to m do
begin
val(x1[i1],p,qw);
p1:=p1+p;
end; 
summ:=p1;
end;
 
begin
j:=k+1;
for i:= 1 to m do
begin
min:=min+'1';
str(k,s);
max:=max+s;
end;
 
min1:=back_perevod(min);
max1:=back_perevod(max);
 
for i:= min1 to max1 do
begin
s:=perevod(j,i);
mmm:=summ(s);
if mmm =n then 
                         begin
                          if prov(s) then
                                          begin
                                          inc(schet);
                                          end;
                          end;
writeln(perevod(j,i),' -----',i);
 
end;
 
writeln(schet);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.10.2012, 22:23
Помогаю со студенческими работами здесь

Определить, есть ли среди цифр в массиве равные?
Program maxelement; var A : array of integer; i, max: integer; begin writeln ('Введите элементы массива'); for...

Найти максимальную цепочку из отрицательных цифр в массиве
Нужно найти в массиве самую большую цепочку отрицательных чисел стоящих друг за другом, если таких несколько показать первую из них....

В одномерном массиве найти число, сумма цифр которого минимальна
В одномерном массиве, заполненном двухзначными числами, найти число, сумма цифр которого минимальна

В массиве из n чисел найти числа с суммой цифр равной 9 и являющиеся степенью 3
в массиве из n чисел найти числа суммой цифр равной 9 и являющиеся степенью 3 заранее спасибо Добавлено через 14 минут помогите...

Определить каких элементов в массиве больше - цифр или латинских строчных букв
Помогите решить задачу....... Определить каких элементов в массиве больше - цифр или латинских строчных букв. Подсчёт количества...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru