市松模様
こちらの問題に、チャレンジしてみました。m(_ _)m
http://rina.jpn.ph/rance/
[出力結果]
***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
問題を解く時のポリシーとして、「人に読みやすいソースコード」を心がけている(つもり)なのですが…入れ子が4重のところは改良したいです。ラインバッファを使うべきか。
演算子"%"、"*"、"/"の優先順位は同じであり、かつ左結合であるため、*の演算をカッコで括っています。
[ソースコード]
1 #include <stdio.h> 2 3 #define C_SQUARE_COLNUM 5 4 #define C_SQUARE_ROWNUM 3 5 #define C_SQUARE_VERTICAL_BLOCKS 4 6 #define C_SQUARE_HORIZONTAL_BLOCKS 5 7 8 int main(void) 9 { 10 int row; 11 int col; 12 13 /* loop for each row */ 14 for(row=0; row<C_SQUARE_VERTICAL_BLOCKS*C_SQUARE_ROWNUM; row++){ 15 /* loop for each column */ 16 for(col=0; col<C_SQUARE_HORIZONTAL_BLOCKS*C_SQUARE_COLNUM; col++){ 17 /* put row */ 18 if(col%(C_SQUARE_COLNUM*2)>=0 && col%(C_SQUARE_COLNUM*2)<C_SQUARE_COLNUM){ 19 if(row%(C_SQUARE_ROWNUM*2) >= 0 && row%(C_SQUARE_ROWNUM*2) < C_SQUARE_ROWNUM){ 20 printf("*"); 21 }else{ 22 printf(" "); 23 } 24 }else{ 25 if(row%(C_SQUARE_ROWNUM*2)>= 0 && row%(C_SQUARE_ROWNUM*2)<C_SQUARE_ROWNUM){ 26 printf(" "); 27 }else{ 28 printf("*"); 29 } 30 } 31 } /* loop for each column */ 32 printf("\n"); 33 } /* loop for each row */ 34 35 return 0; 36 }