Страница 1 из 1

Двумерный массив. Паскаль

Добавлено: 27 апр 2009, 16:08
Кащей
дана матрица 3 х 15
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
из каждой строки берется одно число
вывести все возможные комбинации

Re: Двумерный массив. Паскаль

Добавлено: 27 апр 2009, 18:16
BHy4ok
Чего ?
Комбинации чего, в каком виде и т.д.
Привели бы хотя бы пример/

[syntax='Pascal']
for i:=1 to 15 do
for j:=1 to 3 do
.......
[/syntax]

Re: Двумерный массив. Паскаль

Добавлено: 27 апр 2009, 19:02
Кащей
for i:=1 to 15 do
begin
for j:=1 to 3 do
readln (a[i,j]);
ну это понятно мы введем массив
а пример простой
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43
как заметно это первый столбец

Re: Двумерный массив. Паскаль

Добавлено: 27 апр 2009, 19:25
Naeel Maqsudov
Эх, жалко что 15х3! Было бы 15х4 можно было бы обойтись без вложенных циклов...

for i:=0 to 1073741823 do....

и 30 битов числа i поделить на 15 кусочков по 2 бита.

Три - это неудобно.

Придется 15 счетчиков вложенно изменять от 1 до 3

Код: Выделить всё

for i1:=1 to 3 do for i2:=1 to 3 do for i3:=1 to 3 ...... for i15:=1 to 3 do begin
   writeln(M[i1,1],M[i2,2],M[i3,3],.......,M[i15,15]);  //это очередная комбинация из 15 чисел
end;
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Вот вся программа.

Код: Выделить всё

const
  m:array[1..15,1..3] of integer =
((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));

var
  i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15:byte;

begin
  for i1:=1 to 3 do for i2:=1 to 3 do for i3:=1 to 3 do for i4:=1 to 3 do for i5:=1 to 3 do
  for i6:=1 to 3 do for i7:=1 to 3 do for i8:=1 to 3 do for i9:=1 to 3 do for i10:=1 to 3 do
  for i11:=1 to 3 do for i12:=1 to 3 do for i13:=1 to 3 do for i14:=1 to 3 do for i15:=1 to 3 do begin
    writeln(
       M[1,i1],'-',M[2,i2],'-',M[3,i3],'-',M[4,i4],'-',M[5,i5],'-',
       M[6,i6],'-',M[7,i7],'-',M[8,i8],'-',M[9,i9],'-',M[10,i10],'-',
       M[11,i11],'-',M[12,i12],'-',M[13,i13],'-',M[14,i14],'-',M[15,i15]);
  end;
end.

Re: Двумерный массив. Паскаль

Добавлено: 27 апр 2009, 21:49
Кащей
вы гений....

Re: Двумерный массив. Паскаль

Добавлено: 06 май 2009, 20:31
dr.Jekill
Кащей писал(а):вы гений....

Между прочим можно добавлять отзывы

Re: Двумерный массив. Паскаль

Добавлено: 11 май 2009, 23:06
Хыиуду
Жаль, что матрица. Можно было совершенно без нее:
for i1:=1 to 3 do
for i2:=4 to 6 do
for i3:=7 to 9 do
...
for i15:=43 to 45 do
writeln (i1,' ',i2,' ',i3,...,i15);
И ждать, пока выведется 14348907 комбинаций :)