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

Ответить
Кащей
Сообщения: 3
Зарегистрирован: 27 апр 2009, 15:29

дана матрица 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
из каждой строки берется одно число
вывести все возможные комбинации
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

Чего ?
Комбинации чего, в каком виде и т.д.
Привели бы хотя бы пример/

[syntax='Pascal']
for i:=1 to 15 do
for j:=1 to 3 do
.......
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Кащей
Сообщения: 3
Зарегистрирован: 27 апр 2009, 15:29

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
как заметно это первый столбец
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Эх, жалко что 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.
Кащей
Сообщения: 3
Зарегистрирован: 27 апр 2009, 15:29

вы гений....
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Кащей писал(а):вы гений....

Между прочим можно добавлять отзывы
Нет религии выше истины
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Жаль, что матрица. Можно было совершенно без нее:
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 комбинаций :)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить