1

タスクは、800 列と 600 行の画像上にロシア国旗の画像を作成することです。したがって、旗は 3 つの等しいセクション (上が白、中央が青、下が赤) に分割されます。

これが私のコードです:

#include <stdio.h>

int main() {
   printf("P6\n");
   printf("%d %d\n", 800, 600);
   printf("255\n");

   int width, heightWhite, heightBlue, heightRed, i, j;
   unsigned char Rcolor, Bcolor, Gcolor;

   width = 800;
   heightWhite = 200;
   heightBlue = 400;
   heightRed = 600;

   for (j = 0; j <= heightWhite; j++) {
      for (i = 0; i <= width; i++) {
         Rcolor = 255;
         Bcolor = 255;
         Gcolor = 255;

         printf("%c%c%c", Rcolor, Gcolor, Bcolor);
      }
   }

   for (j = 201; j <= heightBlue; j++) {
      for (i = 0; i <= width; i++) {
         Rcolor = 0;
         Bcolor = 255;
         Gcolor = 0;

         printf("%c%c%c", Rcolor, Gcolor, Bcolor);
      }
   }

   for (j = 401; j <= heightRed; j++) {
      for (i = 0; i <= width; i++) {
         Rcolor = 255;
         Bcolor = 0;
         Gcolor = 0;

         printf("%c%c%c", Rcolor, Gcolor, Bcolor);
      }
   }

   return (0);
}

しかし、私のプログラムによって生成された画像を見ると、青と赤のバーの上部が完全に水平ではないことに気付きました (青と赤のバーの上部をより高くする行の一部のように見えます)。前のピクセル) なぜこれを取得しているのかわかりません。私はすでに Gimp でインストラクターの ppm ファイルを実行しました (これは、ppm ファイルを表示するために使用するものです)。行は完全に水平になっているはずです。何か案は?

(ppm ファイルを添付する方法がわかりませんが、次のようになります: http://users.csc.calpoly.edu/~dekhtyar/101-Fall2013/labs/lab7.html ) (最初のフラグ)

4

1 に答える 1