Как нарисовать спираль # только с циклами for/while и операторами if/else (без массивов), используя C
Поэтому я очень плохо знаком с C и мне интересно, как я мог бы создать следующую спиральную форму:
Это моя комическая попытка..
#include <stdio.h>
int main(void) {
int size;
int i,j;
printf("Enter size: ");
scanf("%d", &size);
for (i = 0, j = 0; i < size - 4; i++, j+=2) {
int row = 1;
while (row <= size) {
int column = 1;
while (column <= size) {
if ((row == 1 + j && column > j && column < size - j)||
(row == size - (j) && column > j && column < size - j) ||
(column == size - (j) && row > j && row <= size - j) ||
(column == 1 + j && row > (2+j) && row < size - j)) {
printf("*");
}
else {
printf("-");
}
column++;
}
row++;
printf("\n");
}
}
return 0;
}
Любая помощь будет принята с благодарностью!
1 ответ
Я наслаждался этой проблемой и столкнулся с некоторыми проблемами, подходящими с подходом. Тем не менее, достаточно возни с тем, что картина очевидна; вот результат:
#include <stdio.h>
#define BLANK " "
#define FILLED "# "
void spiral(int size) {
int i, j;
if (!(size & 1)) { size++; }
int half = size / 2 + 1;
/* top */
for (i = 0; i < half; i++) {
if (i & 1) {
for (j = 0; j < size; j++) {
if (!(j & 1) && (j < i - 1 || j >= size - i)) {
printf(FILLED);
}
else {
printf(BLANK);
}
}
}
else {
for (j = 0; j < size; j++) {
if ((j & 1) && (j < i - 1 || j >= size - i)) {
printf(BLANK);
}
else {
printf(FILLED);
}
}
}
puts("");
}
/* bottom half */
for (; i < size; i++) {
if (i & 1) {
for (j = 0; j < size; j++) {
if (!(j & 1) && (j < size - i || j > i)) {
printf(FILLED);
}
else {
printf(BLANK);
}
}
}
else {
for (j = 0; j < size; j++) {
if ((j & 1) && (j < size - i || j > i)) {
printf(BLANK);
}
else {
printf(FILLED);
}
}
}
puts("");
}
}
int main() {
int i;
for (i = 1; i < 35; i += 2 ) {
spiral(i);
puts("\n");
}
return 0;
}
Выход:
#
# # #
#
# # #
# # # # #
#
# # # #
# #
# # # # #
# # # # # # #
#
# # # # # #
# # #
# # # # #
# #
# # # # # # #
# # # # # # # # #
#
# # # # # # # #
# # #
# # # # # #
# # # #
# # # # # # #
# #
# # # # # # # # #
# # # # # # # # # # #
#
# # # # # # # # # #
# # #
# # # # # # # #
# # # # #
# # # # # # #
# # # #
# # # # # # # # #
# #
# # # # # # # # # # #
# # # # # # # # # # # # #
#
# # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # #
# # # # # # # #
# # # # # #
# # # # # # # # #
# # # #
# # # # # # # # # # #
# #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # #
# # #
# # # # # # # # # # # #
# # # # #
# # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # #
# # # # # # #
# # # # # # # # # #
# # # # # # # #
# # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Объяснение:
Позволять i
представляют текущий индекс строки и j
представляют текущий индекс столбца.
Разделите проблему на две половины. Нижняя половина легче, потому что левая и правая половины симметричны, поэтому четные и нечетные строки печатают свой соответствующий шаблон на знаках чередующихся столбцов if j < size - i || j > i
,
Верхняя половина немного сложнее: рисунок такой же, за исключением того, что левая сторона отстает от правой стороны на 1, что означает, что нам нужно вычесть 1 из левой стороны: if j < i - 1 || j >= size - i
,
Обратите внимание, что этот код может использовать некоторую очистку для уменьшения повторения; Я оставил это подробным, чтобы было понятно, как это работает. Я также взял на себя смелость настроить символы для печати, потому что оригинал труднее для глаз - это легко настроить с помощью #define
s или добавление параметров в функцию.
Вот репл.