2012年4月28日土曜日

開発環境

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

実習11-1.

コード(TextWrangler)

#include <stdio.h7gt;

#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 7gt;7gt; ((x) % 8))
#define CLEAR_BIT(x, y) graphics[(x) / 8][y] &= ~(0x807gt;7gt; ((x) % 8))
#define TEST_BIT(x,y) if((graphics[(x) / 8][y] & (0x80 7gt;7gt; ((x) % 8)) != 0)) \
  printf("A graphic is set\n")

int main(){
  int loc;
  void print_graphics(void);
  
  for(loc = 0; loc < X_SIZE; ++loc){
    SET_BIT(loc,loc);
  }
  print_graphics();
  printf("\n");
  for(loc = 0; loc < X_SIZE; ++loc){
    TEST_BIT(loc,loc);
  }
  printf("\n");
  for(loc = 0; loc < X_SIZE; ++loc){
    CLEAR_BIT(loc,loc);
  }  
  print_graphics();
  printf("\n");
  for(loc = 0; loc < X_SIZE; ++loc){
    TEST_BIT(loc,loc);
  }
  return (0);
}

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

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
X.......................................
.X......................................
..X.....................................
...X....................................
....X...................................
.....X..................................
......X.................................
.......X................................
........X...............................
.........X..............................
..........X.............................
...........X............................
............X...........................
.............X..........................
..............X.........................
...............X........................
................X.......................
.................X......................
..................X.....................
...................X....................
....................X...................
.....................X..................
......................X.................
.......................X................
........................X...............
.........................X..............
..........................X.............
...........................X............
............................X...........
.............................X..........
..............................X.........
...............................X........
................................X.......
.................................X......
..................................X.....
...................................X....
....................................X...
.....................................X..
......................................X.
.......................................X
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................

A graphic is set
A graphic is set
A graphic is set
A graphic is set
A graphic is set

........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................
........................................

$

0 コメント:

コメントを投稿