Спираль символов "#" и "."
Я пытаюсь сделать спираль, которая считывает нечетное число со входа (от 1 до 15), и она нарисует спираль из символов "#" и "." на выходе. Например
вход:
7
выход:
####### ......# #####.# #...#.# #.###.# #.....# #######
или
вход:
9
выход:
######### ........# #######.# #.....#.# #.###.#.# #.#...#.# #.#####.# #.......# #########
Что я уже пробовал:
Вчера я попытался сделать крышку из спирали - успешно -
Сегодня я застрял. Он работает для входных сигналов: 1,3,5,7,9 и 11. Но это не работает для 13 и 15.
#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; }
Rick York
Вам нужно усовершенствовать свои логические проверки, потому что они также потерпят неудачу при более высоких значениях.
Я бы пересмотрел логику, чтобы добавить переменную под названием size или length или что-то подобное и установить ее первоначально на размер спирали. Затем, по мере завершения каждого "оборота" спирали уменьшайте размер. Продолжайте цикл до тех пор, пока размер не станет слишком мал, чтобы сделать полный цикл. Петли по существу одинаковы для каждого оборота, но они становятся меньше каждый раз, поэтому выясните, как сделать один цикл, а затем, насколько он сжимается каждый раз, и вы его получите. Он должен работать для любого размера, если вы делаете петлю правильно.