#include #include //rand() RAMD_MAX #include //time() void PRINT(void); void HIGHT(int hight); void WIDTH(int width); void CROSS(int hight, int width); int CharToInt(char ch); char POINT[5]; int FORM[3][3]; int Tate; int Yoko; int count; //変換した回数 void main(){ srand(time(NULL)); for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ FORM[i][j] = (rand()%(2)); } } while(1){ PRINT(); printf("\n"); printf("反転地点 "); gets(POINT); Tate = CharToInt(POINT[0]) - 17; Yoko = CharToInt(POINT[1]) - 1; if(Tate < 0 || Tate > 3 || Yoko < 0 || Yoko >4){ printf("[A~C][1~3] の範囲で入力してください\n"); printf("\n"); continue; } //縦の変換 HIGHT(Tate); //横の変換 WIDTH(Yoko); //重なったところの再変換 CROSS(Tate, Yoko); count++; } } //文字を数値に変換する int CharToInt(char ch){ return (int)ch - (int)'0'; } void PRINT(void){ printf(" A B C\n"); for(int i=0; i<3; i++){ printf("%d ",i+1); for(int j=0; j<3; j++){ if(FORM[i][j] == 0) printf("□ ",FORM[i][j]); else if(FORM[i][j] == 1) printf("◇ ",FORM[i][j]); } printf("\n"); } } //縦の変換 void HIGHT(int hight){ for(int i=0;i<3;i++){ if(FORM[i][hight] == 0) FORM[i][hight] = 1; else if(FORM[i][hight] == 1) FORM[i][hight] = 0; } } //横の変換 void WIDTH(int width){ for(int j=0;j<3;j++){ if(FORM[width][j] == 0) FORM[width][j] = 1; else if(FORM[width][j] == 1) FORM[width][j] = 0; } } //重なったところの再変換 void CROSS(int hight,int width){ if(FORM[width][hight] == 0) FORM[width][hight]=1; else if(FORM[width][hight] == 1) FORM[width][hight]=0; }