2012年10月13日土曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の11章(ビット演算)11.10(プログラミング実習)自習11-3を解いてみる。

実習11-3.

コード(TextWrangler)

#include <stdio.h>

#define X_SIZE 40
#define Y_SIZE 60

char graphics[X_SIZE / 8][Y_SIZE];

#define SET_BIT(x,y) graphics[(x) / 8][y] |= (0x80 >> ((x)%8))
#define CLEAR_BIT(x,y) graphics[(x) / 8][y] &= ~(0x80 >> ((x)%8))
#define TEST_BIT(x,y) graphics[(x) / 8][y] == (0x80 >> ((x)%8))

int main(){
  int x, y;
  void print_graphics(void);
  
  for(x = 0; x < X_SIZE; x++){
    for(y = 0; y < Y_SIZE; y++){
      if(x == y){
        continue;
      }
      SET_BIT(x, y);
    }
  }
  print_graphics();
  return (0);
}

void print_graphics(void){
  int x, y;
  unsigned int bit;
  
  for(y = 0; y < Y_SIZE; ++y){
    for(x = 0; x < X_SIZE / 8; ++x){
      for(bit = 0x80; bit > 0; bit = (bit >> 1)){
        if((graphics[x][y] & bit) != 0){
          printf("X");
        } else {
          printf(".");
        }
      }
    }
    printf("\n");
  }
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
$

0 コメント:

コメントを投稿