トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> 7行プログラミング >> 幾何学模様表示プログラミング - 基本編 (C言語)

幾何学模様を表示 (C言語)

さてさて、いきなりですが、
下記コードを実行すると、画面に幾何学模様を描画してくれます Σ(゚Д゚)Oh!!
main(){int x,y,X,Y,T;short s[2];puts("ヨコ タテ モヨウ(1-3)ヲニュウリョク");scanf("%d %d %d"
,&X,&Y,&T);srand(time(0));for(y=0;y<Y;y++){for(x=0;x<X;x++){switch(T){case 1:s
[0]=rand()%2?'/':'\';break;case 2:s[0]=(((2+((x-X/2+((y-Y/2)>>9))>>8)+((y-Y/
2)>>9))%2)<<8)==0?'/':'\';break;case 3:s[0]=((((4410+x*y/(x+y+1))%2)<<8))==0
?'/':'\';}s[1]='\0';printf("%s",(char*)&s);}puts("");}getch();}
とりあえず実行ファイル(.exe)も置いておくので、よろしければダウンロードして実行してみて下さい。⇒ code38.zip 【プログラムの説明】 ① プログラムを実行すると、「ヨコ タテ モヨウ(1-3)ヲニュウリョク」というメッセージが表示されます。 「横サイズ」「縦サイズ」「模様の種類(1~3の間)」を任意で入力し、Enterキーを押します。 幾何学模様プログラミング - 設定 ② ①でEnterキーを押すと、幾何学模様が表示されます。 (入力した縦横サイズ、模様の種類によって、表示される模様が変化します。) ex) 模様種類1 【ランダム】 幾何学模様プログラミング - ランダム ex) 模様種類2 【渦巻き】 幾何学模様プログラミング - 渦巻き ex) 模様種類3 【規則的】 幾何学模様プログラミング - 規則的 ③ 最後に、何かキーを押すとプログラムが終了します。 プログラミングノウハウとしては、特に特筆する点もないのですが、一応補足します^^;) 上記コードは、2ちゃんねるのカキコを元に管理人が以下のコードを作成し、それを最適化して5行にまとめたものです。
 1 : #include <stdio.h>
 2 : #include <stdlib.h>
 3 : #include <time.h>
 4 :
 5 : int main(void)
 6 : {
 7 :     int x, y, maxX, maxY, drawType;
 8 :     short str[2];
 9 :
10 :     printf("横サイズ、縦サイズ、描画模様(1~3) を入力して下さい ->");
11 :     scanf("%d %d %d", &maxX, &maxY, &drawType);
12 :
13 :     srand((unsigned int)time(NULL));
14 :
15 :     for (y = 0; y < maxY; y++) {
16 :         for (x=0; x < maxX; x++) {
17 :             str[0] = str[1] = NULL;
18 :
19 :             switch (drawType) {
20 :             case 1: str[0] = rand() % 2 ? '/' : '\'; break;
21 :             case 2: str[0] = (((2+((x- maxX/2 +((y-maxY/2)>>9))>>8)+((y-maxY/2)>>9))%2)<<8) == 0 ? '/' : '\'; break;
22 :             case 3: str[0] = ((((4410+ x*y/(x+y+1))%2)<<8)) == 0 ? '/' : '\';
23 :             }
24 :             str[1] = '\0';
25 :
26 :             printf("%s", (char *)&str);
27 :         }
28 :         puts("");
29 :     }
30 :
31 :     getch();
32 :
33 :     return 0;
34 : }
縦横サイズをscanf()で入力し、ループで回しながら '/' または '\' をshort型の配列に入れ、 それをchar *にキャスティングし、printf()で出力しています。 (※ 24行目でstr[1]にNULLを入れているのはその為です。) プログラミングとしては三流でも、実行結果は面白いので、まぁそれはそれで良いのではないでしょうか?? ( ̄ー ̄)ニヤリ (・・・という自己満w)
幾何学模様 C++版へ続きます。
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。