幾何学模様を表示 (C++) の続きです。
C,C++で幾何学模様を表示するコードを、一覧にまとめてみました^^;)
(※ 横、縦サイズの入力は省いてあります。)
渦巻き模様
1 : #include <iostream>
2 : using namespace std;
3 :
4 : #define max(a,b) ((a)>(b)?(a):(b))
5 : #define min(a,b) ((a)<(b)?(a):(b))
6 :
7 : const int n = 19;
8 : int y;
9 : short s[n+2], *l=(short*)" ┌┘┐─│└";
10 :
11 : void main(){
12 : struct a{
13 : a(){
14 : int w,z,x=0;
15 : while(x<=n)
16 : s[x++] = l[(x<min(y,w=n-y-(z=y>n/2)++) || x>max(y,w))+(x!=y&&x!=w)*4+((x==y)+(x==w)*3)*z];
17 :
18 : s[x]=0;
19 : y++;
20 : cout << (char *)s << endl;
21 : }
22 : }
23 : b[n];
24 : }
十字模様
1 : #include <stdio.h>
2 :
3 : char* c = "┌┼┘└┐";
4 :
5 : void main(void)
6 : {
7 : int x, y;
8 : for (y=0; y<20; y++) {
9 : for(x=0; x<20; x++) {
10 : fwrite(c+((y*2+x)%5)*2, 2, 1, stdout);
11 : }
12 : puts("");
13 : }
14 : }
ラーメンの器っぽい模様
1 : #include <stdio.h>
2 :
3 : short * str = (short *)"│┌┐││┌┘││└┘│└─┘└──┼──┐┌─┐";
4 :
5 : void main(void)
6 : {
7 : int x, y, tmp;
8 :
9 : for (y=0; y<25; y++) {
10 : for(x=0; x<25; x++) {
11 : tmp = (y*7+x) % 25;
12 : fwrite((char *)(str + tmp), sizeof(short), 1, stdout);
13 : }
14 : puts("");
15 : }
16 : }
コードは地味ですが、出力結果は美しいです~ヽ(´ー`)ノ