Вывести 100 чисел спиралью

Разместить числа по спирали (Pascal)

Дано натуральное число n. Необходимо расположить числа от 1 до n^2 в квадратном массиве по спирали:

Отсчет начать от левого верхнего угла, далее двигаться в направлении «восток-юг-запад север» и.т.д.

Приведенная ниже программа содержит две процедуры: процедуру вывода массива и процедуру заполнения массива по спирали. В процедуре заполнения массива сначала осуществляется движение от ячейки с индексами [1,1] в направлении «восток-запад» до ячейки [1,n], затем от ячейки [2,n] в направлении «север-юг» до ячейки [n,n] , затем в направлении «восток-запад» от ячейки [n,n-1] до ячейки [n,1] и наконец от ячейки [n-1,1] до ячейки [2,1] . Затем все повторяется, но уже с меньшим размером областей.

Рассмотрим другой алгоритм решения этой задачи.Сначала будем вести отсчет в обратном порядке от n^2 до 1 , тогда подход к последнему числу матрицы будет осуществляться в направлении «юг — запад — север -восток».

Например для нечетного n , допустим для n=5

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Последнее число занимает позицию

Для четного n , например для n=4 , имеем:

7 8 9 10
6 15 16 11
5 14 13 12
4 3 2 1

При этом последнее число занимает позицию

Перенесем начало координат в позицию последнего числа. Обозначим точку начала координат xx=0; yy=0 . Тогда для нечетного n имеем xx:= n div 2+1-j; yy:= n div 2+1-i , для четного: xx:= n div 2+1-j; yy:= n div 2-i . При этом положительное направление оси абсцисс выберем в направлении «с востока на запад».

Таким образом, если n=5 , то для x[2,1]=16 имеем xx=2+1-1=2, yy=2+1-2=1 . Для n=4 , x[2,1]:=6 , имеем xx:=2+1-1=2, yy=2-2=0 .

Далее рассмотрим спиральную функцию двух переменных S=F(xx ,yy) , которая ставит в соответствие упорядоченной паре целых чисел xx,yy некое натуральное число S (см. Грэхем Р., Кнут Д., Паташник О. Конкретная математика. Основание информатики.-М.: Мир, 1998. -703 с.).

Например, для упорядоченной пары xx=-1; yy=1 S=F(-1,1)=6 . Функция S=F(xx,yy) может быть представлена по формуле:
S=(2k)2+p[2k+xx+yy],
где k=Max(|xx|,|yy|) — максимальное значение из двух;
p=1 , если xx>yy , иначе p=-1 .

Очевидно, чтобы в массиве располагались числа от n^2 до 1 необходимо ввести поправку, т.е S:=n^2-S . И наконец для четного n матрицу необходимо повернуть на 180° против часовой стрелки, чтобы отсчет соответствовал условию задачи, т.е. был в направлении «восток-юг-запад-север».

Источник

Заполнение двумерной матрицы по спирали

Привет, мой читатель.

На днях встретил простую на вид задачу. Как оказалось, не легко решить такую задачу за пять, и даже за 50 минут. Здесь пришлось подумать и поэкспериментировать.

Дана матрица, или, на нашем языке, двумерный массив. Его размеры не могут превышать 10х10. Они задаются пользователем и это может быть не только квадрат, но и прямоугольник. Обозначим длины сторон через N и M. Нам необходимо заполнить эту матрицу числами от 1 и по возрастающей до M*N. Прежде, чем привести код целиком, мне хотелось бы изложить ход мыслей, чтобы стало понятно как все работает. Если же тебе просто нужно решение, то ты можешь пролистать ниже, скопировать его и закрыть страницу как больше не нужную.

Стандартно, нам нужен сам массив и переменные для хранения длин сторон прямоугольного (двумерного) массива.

Также мы будем действовать по слогике, что при заполнении мы очерчиваем прямоугольники, каждый их которых на единицу меньше с каждой стороны. Если смотреть на эти прямоугольники в декартовой системе координат, то начало каждой из сторон сдвигается на 1 вправо или вниз, а конец влево или вверх. Договоримся, что оси направлены вправо и вниз от точки [0,0].

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

Обозначим их следующим образом:

Ну, и, нам нужна переменная, значением которой мы будем заполнять массив, пока она не достигнет значения M*N

В цикле начинаем заполнять массив. Сначала точке a[i][j] присваиваем значение k. Это удобно тем, что если длина сторон равна 0, то мы не войдем в массив. Иначе в точку a[i][j] положим значение k, в конце же цикла инкреминируем его.

Далее вычисляем следующий шаг

  • Если у нас верхняя сторона прямоугольника и мы не достигла правой стороны, то двигаемся вправо: ++j
  • Если мы на правой стороне прямоугольника и не достигли нижней стороны, то двигаемся вниз: ++i
  • Если мы на нижней стороне прямоугольника и не достигли левой стороны, то двигаемся влево: —j
  • Иначе двигаемся вверх: —i

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

  • Если мы находимся на второй строке
  • Если мы находимся на первом столбце
  • И, в случае, если чертим не прямоугльник, а вертикальную линию, если первая строка не равна последней. (этот пункт самый сложный во всем алгоритме. Его я достиг путем экспериментов)

Тогда увеличиваем отступы от краев первого прямоугольника:

Собственно это весь алгоритм. А ниже код всей программы:

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

Источник

Вывод матрицы спиралью

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Заполнение матрицы спиралью
Здравствуйте! Я знаю, что на форуме есть ответ на данный вопрос, но не понятно, как происходит само.

Заполнение матрицы спиралью
Доброго времени суток На входе — N, на выходе — матрица NxN, заполненная спиралью(см. пример).

Заполнение матрицы спиралью — корректировка кода
Код вроде работает,но не хочет заполняться в консольке по спирали. Можете исправить эту маленькую.

Заполнение матрицы спиралью против часовой стрелки
Напишите программу, которая выводит на экран матрицу размера N*N (0 9

Вывод прямоугольной матрицы спиралью
Вводится прямоугольная матрица произвольного размера. Нужно вывести её элементы по спирали по.

Вывод двумерного массива спиралью.
Вот собственно есть множество вариантов решений данной задачи. Одно из них чуть ниже. Сам вопрос в.

Вывод двумерного масива спиралью
Дано число n. Создать массив A и заполнить его по спирали, начиная с числа 0 в центральной клетке.

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

Источник

Заполнить квадратную матрицу числами по спирали

Задача B. Спираль

В этой задаче вам необходимо вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N2 по спирали (см. примеры).
Формат входных данных
Во входном потоке находится единственное число N (2 ≤ N ≤ 100).
Формат выходных данных
В выходной поток выведите N строк по N чисел, разделённых пробелами. Не допускается начинать спираль в ином, кроме верхнего левого, углу, закручивать спираль против часовой стрелки или изнутри наружу.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Заполнить квадратную матрицу натуральными числами по спирали
Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3.

Заполнить заданную квадратную матрицу по спирали числами 0 и 1
Всем привет! Поставили передо мной следующую задачу: Написать программу, которая заполняет.

Заполнить квадратную матрицу по спирали
Одномерный: В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по.

Заполнить квадратную матрицу порядка n по спирали
Прошу оказать содействие с написанием кода Задача: Заполнить квадратную матрицу порядка n по.

Примеров не видно ваще ни разу.

Поэтому чота я не понял: допустим «входной поток» дает нам число 3. Значит надо вывести квадрат 3х3 с девятью числами от 1 до 6. Так? Т.е. числа будут дробные. С шагом = 6/9 = 2/3 = 0.(6)
Вот, готово:

1.00 1.66 2.33
5.66 6.00 3.00
5.00 4.33 3.66

Источник

Вывод чисел по спирали

Вывод квадрата чисел, повернутых по «спирали»
Прошу помочь с решением такой-вот задачи. Вводится натуральное число N (2 5

Да, я видела то решение. Но мне хочется это добить. Просто это для сертификата задачка. Поэтому не хочется совсем чужие решения копипастить.

Добавлено через 5 минут
Вот это решение самое короткое из тех, что я видела. Просто самой хочется сделать. Я все задачки на этом курсе Stepik сама решила. 98%. Только эта осталась. Неохота копипастить. Может, у самой получится.

Вывод матрицы по спирали
Массив по спирали я заполнил. Но нужно вывести его так, чтобы был видел алгоритм заполнения. То.

Вывод спирали на экран
Составить программу вывода на экран спирали. При нажатии клавиши «курсор вправо» начинается.

вывод массива по спирали
Задание: вывести двухмерный массив(25х30) по спирали с левого нижнего угла вправо. Помогите плиз

Вывод строки по спирали
Помогите пожалуйста. Нужно вдоль спирали выводить вводимые с клавиатуры буквы. Не получается.

Вывод матрицы по спирали
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь.

Вывод матрицы по спирали изнутри
Помогите пожалуйста, кто может написать функцию вывода матрицы a по спирали изнутри? a0 a1 a2 .

Источник

Читайте также:  Как отмыть вискозный ковер
Оцените статью