使用矩阵进行PMG的棋盘

时间:2018-10-01 00:19:24

标签: c++ c

我需要一些帮助,我正在为像素为24x24的国际象棋棋盘编写代码,在普通的国际象棋中为8x8正方形,所以为24/8,因为每个像素接收0或1,所以我需要像Desired output那样安装它在我使用此输出以在PMG中创建图像之后。有关pmg https://en.wikipedia.org/wiki/Netpbm_format

的更多详细信息

所需的输出

[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]
[1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ]

电流输出

0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 
0  0  0 
1  1  1 

代码

 #include <stdio.h>

 int main() {
     int l = 24,c = 24, tam = 0, check=0;

     printf("P2\n");

     printf("%d %d\n", l,c);
     printf("1\n");

     for (int i = 0; i < l; ++i) {
        tam=0;
        for (int j = 0; j <= 8; j++) {
            if(check == 0){

                while (tam < (c/8)){
                    tam++;
                    printf(" 0 ");
                }
                check = 1;

            }else{

                while (tam < (c/8)){
                    tam++;
                    printf(" 1 ");
                }
                check = 0;

            }

        }
        printf("\n");
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您的代码存在三件事:

  1. 您需要重置tam每个内部循环,而不是每个外部循环。
  2. 您需要将内部循环缩短一次迭代(<而不是<=)。
  3. 您需要在第三行的末尾交换check的起始值。

我已经进行了这三个更改,同时进行了最少的其他更改:

#include <stdio.h>

int main() {
    int l = 24,c = 24, tam = 0, check=0;

    printf("P2\n");

    printf("%d %d\n", l,c);
    printf("1\n");

    for (int i = 0; i < l; ++i) {
       for (int j = 0; j < 8; j++) {
           tam=0;
           if(check == 0){

               while (tam < (c/8)){
                   tam++;
                   printf(" 0 ");
               }
               check = 1;

           }else{

               while (tam < (c/8)){
                   tam++;
                   printf(" 1 ");
               }
               check = 0;

           }

       }
       printf("\n");
       if(i%3 == 2)
           check = check == 1 ? 0 : 1;
   }
   return 0;

}

产生输出:

P2
24 24
1
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0 
 1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0  1  1  1  0  0  0