|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.07.2012, 19:51 | #1 |
Новичок
Джуниор
Регистрация: 15.03.2012
Сообщений: 1
|
Не могу составить программу для заполнения матрицы по спирали с заданным интервалом между ячейками!
Здравствуйте, дорогие форумчане!!!
Делаю программу одному другу - он занимается игрой в государственные лотереи и попросил составить ему программу следующего содержания: Дана последовательность 80 чисел (как она рассчитывается, думаю, можно упустить)... Далее с этой последовательностью делаем следующее: 1) Он сам выбирает расстояние между элементами и матрица 9х9 заполняется с заданным интервалом (причем ячейка с индексом [9,9] (если нумерация элементов начать не с 0 как в С-подобных языках, а c 1), например, если интервал=0, то матрица заполняется по обычной спирали (с этим проблем нет - еще в школе его разобрал), но если интервал > 1, то возникают проблемы... Вот как это выглядит при интервале 1 (покажу на матрице 5х5): | 1| 9 | 2|10| 3| | 8|16| |17|11| |15| |20| | 4| | 7|19| |18|12| |14| 6|13| 5|free| На этом 1 этап прохода заканчивается, как видно - пустую клетку вообще не учитываем и при вычислении следующего номера ячейки ее упускаем, как будто и нет ее. На следующем этапе ищем самую первую свободную ячейку (сверху вниз, слева - направо) - с этим проблем у меня не возникнет и заполняем оставшиеся пустые клетки. | 1| 9 | 2|10| 3| | 8|16|21|17|11| |15|24|20|22| 4| | 7|19|23|18|12| |14| 6|13| 5|free| Вот как это объяснить компилятору???? Можете предложить способы решения данной проблемы, а, в частности, я предлагаю свое видение решения: i = 1 // Порядковый номер элемента исходного массива index = {0,0}; // Массив с координатами следующей ячейки, получаемой из функции ind_i = 0; // Номер текущей строки элемента ind_j = 0; // Номер текущего столбца элемента dx = 1 // Шаг while (i <= 80) { if (i == 0) { arr_res[ind_j, ind_i] = arr_src[i]; i++; } else { index = GetNextFreeCell(ind_j, ind_i, dx) ind_i = index[0]; ind_j = index[1]; arr_res[ind_j][ind_i] = arr_src[i]; i++; } } Но вот как реализовать функцию получения индекса следующей ячейки, в которую нужно вставить следующий элемент.... Вот этого я не знаю.... Может, кто-то может предложить способ решения проблемы???? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составить программу для обмена местами максимального и минимального элемента главной диагонали квадратной числовой матрицы. | сона | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 09.07.2012 00:57 |
Составить Delphi-программу для заполнения таблицы соотношения между такими мерами веса как унция, грамм, карат. | Lilit)) | Помощь студентам | 2 | 21.02.2012 22:29 |
Составить программу для вычисления элементов векторов Х,R и матрицы А | Bjac@ | Помощь студентам | 5 | 19.06.2011 11:16 |
Алгоритм заполнения квадратной матрицы по спирали | beregok | Помощь студентам | 3 | 15.01.2009 16:56 |