Как напечатать спиральный узор с символом '#' в C
Учитывая число N. выведите спираль, которая выглядит как вывод ниже.
Ввод
Входные данные состоят из целого числа N (1 ≤ N ≤ 101) , которое представляет собой число N. Это гарантировано
что N mod 4 = 1
Выход
Выходная спираль, которая выглядит как в Примере.
1-й образец ввода
1
Выход для 1-го входного сигнала образца
#
2-й образец ввода
5
Выход для 2-го входного сигнала образца
##### ....# ###.# #...# #####
3-й образец ввода
9
Выход для 3-го входного сигнала образца
######### ........# #######.# #.....#.# #.###.#.# #.#...#.# #.#####.# #.......# #########
4-й образец ввода
11
Выход для 4-го входного сигнала образца
########### ..........# #########.# #.......#.# #.#####.#.# #.#...#.#.# #.#.###.#.# #.#.....#.# #.#######.# #.........# ###########
Что я уже пробовал:
Я могу довести его только до 11
#include<stdio.h> int main(){ int n; scanf("%d",&n); fflush(stdin); for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ if(i==0||i==n-1||j==n-1) printf("#"); else if(j==0&&i>1&&i<n-1) printf("#"); else if(i==2&&j<n-2) printf("#"); else if(j==n-3&&i>2&&i<n-2) printf("#"); else if(i==n-3&&j<n-3&&j>1) printf("#"); else if(j==2&&i>3&&i<n-2) printf("#"); else if(i==4&&j>2&&j<n-4) printf("#"); else if(j==6&&i>4&&i<n-4) printf("#"); else if(i==6&&j>3&&j<n-5) printf("#"); else printf("."); } printf("\n"); } getchar(); return 0; }
Patrice T
Покажи свой код.
F-ES Sitecore
Начните с верхнего левого # и следуйте за ним вправо, вниз, влево, вверх, вправо и так далее, и обратите внимание на длину каждой строки в символах # и посмотрите, сможете ли вы обнаружить там шаблон.
Rick York
Я думаю, что подход Йохена является хорошим для реализации. Создайте массив NxN, также называемый матрицей, из точек, а затем вы можете пересечь их по спирали и отметить, куда идут хэши.