自分に出された課題で、三角形やダイヤ型といった実行画面例をfor文を使って解いたのですが、
画像の実行例題7・8は法則がまったくわからなくて困っています><;
関数の定義など、基礎の基礎は一応理解しているのですがこの2問はどうしても解けません。
ヒントだけでも全然構いません。解法の道筋だけでも教えて頂けたら幸いに思います;;
どうかよろしくお願いいたします<(_ _)>

#include <stdio.h> #define MAX 100 int main(void) { char buf[MAX][MAX] = {1}; int mass, dire = 0; int x = 0, y = 0, c = 0; scanf("%d", &mass); while(c++ < mass){ switch(dire){ case 0: while(x == mass - 2 || x < mass - 2 && !buf[x + 2][y]) buf[x += 1][y] = 1; dire++; break; case 1: while(y == mass - 2 || y < mass - 2 && !buf[x][y + 2]) buf[x][y += 1] = 1; dire++; break; case 2: while(x == 1 || x > 0 && !buf[x - 2][y]) buf[x -= 1][y] = 1; dire++; break; case 3: while(y == 1 || y > 0 && !buf[x][y - 2]) buf[x][y -= 1] = 1; dire = 0; break; } } for(y = 0;y<mass;y++){ for(x = 0;x<mass;x++){ printf("%s", buf[x][y] ? "*" : " "); } printf("\n"); } return 0; }