[求助]麻烦帮忙看看这个海龟图程序好吗?谢谢^_^

iammtm2671 2005-03-24 08:18:51
海龟图问题:
定义一个二维数组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;
}
...全文
184 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltc_mouse 2005-03-25
  • 打赏
  • 举报
回复
for(int a=1;a<=20;a++) ///////should be: for(int a=0; a<20; ++a )
for(int b=1;b<=20;b++){ ///////should be: for(int b=0; b<20; ++b )
if(floor[a][b]==1)
cout<<"*";
else cout<<" ";
if(b%12==0) ////// ???
cout<<endl;
}
====================================
这个输出有点问题。C语言数组索引是从0开始的~
iammtm2671 2005-03-24
  • 打赏
  • 举报
回复
我的分数不多,不过要是哪位大侠帮忙解决了的话可以把我的分都给你,呵呵,希望不要嫌弃^_^
iammtm2671 2005-03-24
  • 打赏
  • 举报
回复
现在在了, sleepypig55(zyl)可以帮忙吗?或者谁要是可以帮忙的话可以发到我的邮箱wtw1984@163.com
或者加我的QQ:105379964
谢谢了,不过明天白天要上课估计不在,明晚或者周末都在的
sleepypig55 2005-03-24
  • 打赏
  • 举报
回复
你还再么?

64,701

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧