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

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> 7行プログラミング >> 構造体コンストラクタを利用した幾何学模様表示 (C++)

幾何学模様を表示 (C++)

幾何学模様を表示 (C言語)の続きです。

前回C言語で幾何学模様を表示していたものを、C++に移植したものが以下のコードです。
#include <iostream>
using namespace std;
int x,y,X,Y,T;void main(){cout<<"ヨコ タテ モヨウ(1-3)ヲニュウリョク"<<endl;cin>>X>>Y>>T;
struct a{short*s;a(){s=new short[X];for(x=0;x<X-1;x++,y++){switch(T){case 1:s[
x]=rand()%2?'/':'\';break;case 2:s[x]=(((2+((x-X/2+((y-Y/2)>>9))>>8)+((y-Y/2
)>>9))%2)<<8)==0?'/':'\';break;case 3:s[x]=((((4410+x*y/(x+y+1))%2)<<8))==0?
'/':'\';}}s[x]=0;cout<<(char *)s<<endl;delete[]s;};}*b=new struct a[Y];
delete[]b;}
残念な事に8行になってしまいましたが、どうしても7行以内に収めなければ気がすまない人は、 delete[]部分(← newで確保したメモリの解放部分)を削除すれば、7行以内にカッチリ収まります。 (まぁ、如何に文字数を減らす為とはいえ、非常に推奨できないコーディングなわけですが・・・orz) コード実行例 (C言語のコード実行結果と同じです。) 構造体のコンストラクタを利用して幾何学模様を表示(C++) それでは、コードを解説します。 冒頭のコードに、適切な改行・インデントを入れたものが以下のコードです↓↓
 1 : #include <iostream>
 2 : using namespace std;
 3 :
 4 : int x,y,X,Y,T;
 5 :
 6 : void main()
 7 : {
 8 :    cout << "ヨコ タテ モヨウ(1-3)ヲニュウリョク" << endl;
 9 :    cin >> X >> Y >> T;
10 :
11 :    struct a {
12 :
13 :        short * s;
14 :
15 :        a(){
16 :            s = new short[X];
17 :            for(x=0;x<X-1;x++,y++) {
18 :                 switch (T) {
19 :                 case 1: s[x] = rand() % 2 ? '/' : '\'; break;
20 :                 case 2: s[x] = (((2+((x- X/2 +((y-Y/2)>>9))>>8)+((y-Y/2)>>9))%2)<<8) == 0 ? '/' : '\'; break;
21 :                 case 3: s[x] = ((((4410+ x*y/(x+y+1))%2)<<8)) == 0 ? '/' : '\';
22 :                 }
23 :            }
24 :            s[x]=0;
25 :            cout << (char *)s << endl;
26 :            delete [] s;
27 :        };
28 :
29 :    } * b = new struct a[Y];
30 :
31 :    delete [] b;
32 : }
11~29行目には、struct a 構造体が宣言されています。 そして、15~27行目には、struct a構造体のコンストラクタが宣言されています。 この様にC++では、構造体内にメンバ関数を含めることができ、 さらに構造体内に、コンストラクタ・デスクトラクタも含めることができるのです!! (これは、「Cの構造体」と「C++の構造体」の、非常に大きな差異と言えます。) 29行目で、構造体の宣言と同時に、構造体の配列を動的に作成しており、 配列の1つ1つの構造体が作成される度に、コンストラクタも順に呼び出されます。 (※ ↑↑この一連の動作が、C言語での二重ループに相当します^^;) 構造体のコンストラクタを利用して幾何学模様を描画するのは、(*^ー゚)b グッジョブ!! と言えるのではないでしょうか??(意味不明)
幾何学模様サンプル集 (C,C++)へ続きます。
         このエントリーをはてなブックマークに追加   


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




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





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




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