![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Alexdel |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Всем привет! требуется написать прогу для заполнения прямоугольной таблицы размерами n*n по спирали числами от 1 до n*n. Я вот тут кое-что написал но работает не так, как надо... Мозги уже кипят... Помогите плиз кто чем может... Хотя бы намёк сделайте=)
Прикрепленные файлы ![]() |
![]() ![]() |
Гость |
![]()
Сообщение
#2
|
Гость ![]() |
Всем привет! требуется написать прогу для заполнения прямоугольной таблицы размерами n*n по спирали числами от 1 до n*n. Я вот тут кое-что написал но работает не так, как надо... Мозги уже кипят... Помогите плиз кто чем может... Хотя бы намёк сделайте=) //на PascalABC.net //Матрица по спирали из любого угла или из центра, по часовой или против часовой begin var n:= 3; var ИзЦентра := 0; // 0 - из угла 1 - из Центра Var Центр := Ceil(n / 2) - 1; //Координата центра матрицы var (i, j, Направление, nEven) := (0, 0, 1, n.IsEven ? 1 : 0); // с левого верхнего if ИзЦентра = 1 then (i, j, Направление, nEven) := (Центр, Центр, 1, 0); // из центра var Матрица := new integer[n,n]; for var Элемент := 1 to n*n do begin Матрица[i,j]:= Элемент; { [i,j] - с левого верхнего по часовой; из Центра вправо по часовой [j,i] - с левого верхнего против часовой; из Центра вниз против часовой [n-1-i,j] - с левого нижнего против часовой; из Центра вправо против часовой [n-1-j,i] - с левого нижнего по часовой; из центра вверх по часовой [j,n-1-i] - с правго верхнего по часовой; из Центра вниз по часовой [i,n-1-j] - c правго верхнего против часовой; из Центра влево против часовой [n-1-i,n-1-j] - c правого нижнего по часовой; из Центра влево по часовой [n-1-j,n-1-i] - c правого нижнего против часовой; из центра вверх по часовой } case Направление of 1:begin {вправо} inc(j); if (Центр - i + ИзЦентра ) = (j - Центр - nEven) then Направление := 2; end; 2:begin {вниз} inc(i); if i = j then Направление := 3; end; 3:begin {влево} dec(j); if (i - Центр) = (Центр - j + nEven) then Направление := 4; end; 4:begin {вверх} dec(i); if (i - 1) = (j - ИзЦентра) then Направление := 1; end end; end; Матрица.Println; end. |
![]() ![]() |
![]() |
Текстовая версия | 9.09.2025 10:11 |