[求助]麻烦帮忙看看这个海龟图程序好吗?谢谢^_^
海龟图问题:
定义一个二维数组floor[0][0]初始化为0,海龟始终从0开始移动,输入1海龟无动作,输入2海龟开始移动,跟踪其移动的形状,海龟经过的地方floor[i][j]为1.输入3,海龟右转;输入4,海龟左转;输入(5,n)时,海龟向前走n步;输入6,把海龟经过的路线(即floor[i][j]==1的路线)用*打印出来,其他位置用空格打印.输入9结束.
这是C++编程金典第四章的一道习题,我调试的过程没有遇见任何问题,但是结果始终不正确,例如输入
2
5,12
3
5,12
3
5,12
1
6
9
应该打印出一个正方形,但是结果却乱七八糟,麻烦各位帮忙看看到底时哪里的问题好吗?谢谢,我已经看了好几天了还是没有找出问题^_^
#include <iostream>
using namespace std;
int main()
{
int floor[20][20]={{0}},//坐标数组
i=0, j=0;//i表示横坐标,j表示纵坐标
int left=0,//left为0表示向上为左转,1或-3为左,2或-2为下,3或-1为右
n=0, k;//acction
floor[0][0]=1;
while(n!=9){
cout<<"Enter your acction:";
cin>>n;
switch(n){
case 1:
break;
case 2:
cout<<"Begin!"<<endl;break;
case 3:
left--;break;
case 4:
left++;break;
case 5:
cout<<"Enter the step number:";
int m;
cin>>m;
if((left%4)==0){//向上
if(j+m<20){
k=j;
while(k<(j+m)){
floor[i][k]=1;
k++;}
j+=m;
}
else
cout<<"Can't reach!";
}
else if((left%4)==1||(left%4)==-3){//向左
if(i-m>=0){
k=i;
while(k>(i-m)){
floor[k][j]=1;
k--;}
i-=m;
}
else
cout<<"Can't reach!";
}
else if((left%4)==2||(left%4)==-2){//向下
if(j-m>=0){
k=j;
while(k>(j-m)){
floor[i][k]=1;
k--;}
j-=m;
}
else
cout<<"Can't reach!";
}
else if((left%4)==3||(left%4)==-1){//向右
if(i+m<20){
k=i;
while(k<(i+m)){
floor[k][j]=1;
k++;}
i+=m;
}
else
cout<<"Can't reach!";
}
break;
case 6:
for(int a=1;a<=20;a++)
for(int b=1;b<=20;b++){
if(floor[a][b]==1)
cout<<"*";
else cout<<" ";
if(b%12==0)
cout<<endl;
}
break;
}
}
system("PAUSE");
return 0;
}