2011-08-01 14 views
0

私のdrawRect()関数はあたかもバグがあるかのように動作しています。私は、次のバグがあるかどうかを判断しようとしています。そうでない場合は、間違っています。カスタムdrawRect()関数にバグやエラーがありますか?

私はトップスクリーンに矩形を表示する機能を作ろうとしています。プログラマが "drawRect(3,3)"と入力すると、3×3の矩形が作成されます。しかし、プログラマーが "drawRect(3,4)"をタイプすると、四角形の右上隅が表示され、次に無限に長い上端が表示されます。誰か助けてくれますか?ここに私のコードは次のとおりです。このような

#include <stdio.h> 
#include <stdlib.h> 

#define SIDES 0xB3 
#define TOP_RIGHT 0xBF 
#define BOTTOM_LEFT 0xC0 
#define TOP_BOTTOM 0xC4 
#define BOTTOM_RIGHT 0xD9 
#define TOP_LEFT 0xDA 

int heightloop; 
int widthloop; 

int displayrect(int height, int width) 
{ 
printf("%c",TOP_LEFT); 
for(widthloop=1;widthloop<width-2;width++) 
{ 
    printf("%c",TOP_BOTTOM); 
} 
printf("%c\n",TOP_RIGHT); 
for(heightloop=1;heightloop<height-2;height++) 
{ 
    printf("%c",SIDES); 
    for(widthloop=1;widthloop<width-2;width++) 
    { 
     printf(" "); 
    } 
    printf("%c\n",SIDES); 
} 

printf("%c",BOTTOM_LEFT); 
for(widthloop=1;widthloop<width-2;width++) 
{ 
    printf("%c",TOP_BOTTOM); 
} 
printf("%c",BOTTOM_RIGHT); 
return(0); 
} 

答えて

2

ループでは、widthheightではなく、widthloopheightloopを増やす必要があります。またwidthloopheightloopは0で初期化する必要があります。

+0

ありがとうございます!私は矩形の幅を増やしていると思うので、矩形の幅は問題のように増え続けます。 – smilinggoomba

0

ループ:

for(widthloop=1;widthloop<width-2;width++) 

と:width <= 3またはheight <= 3

​​

は何もしません。これはバグ自体、単に「コードのにおい」ではありませんが、

はまた、widthloopheightloopが本当にローカル変数でなければならないことに注意してください。

関連する問題