我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 【c】关于life的问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

剑云



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 考研俱乐部
发贴: 1608
威望: 0
浮云: 1471
在线等级:
注册时间: 2006-07-05
最后登陆: 2010-11-06

5come5帮你背单词 [ trample /'træmpl/ vt. 践踏,毁坏,伤害 ]


【c】关于life的问题

我编了一个life的程序
但是出了个错误,我找了一晚上也没找出来。
请高手指点,指出问题出在哪里?
我的问题是
如果正确的话
在第一副图中输入5 5 和8 8的时候,输出的矩阵应该是22*62的,其中第五行五列和第八行八列输出*号,其他的该是‘—’号,问题就在这里,它输出的全部是*号
问题我没找到,说不定是个致命的错误,所以请大家帮帮忙看看
下面是源程序

/* Note:Your choice is C IDE */

#include "stdio.h"
#include"common.h"
#include"life.h"
void main()
{
int row,col;
Grid map;
Grid newmap;
Initialize(map);
WriteMap(map);
printf("This is your chioce\npress enter continue!\n");
while(getchar()!='\n');
do{
for(row=1;row<=MAXROW;row++)
for(col=1;col<=MAXCOL;col++)
switch(NeighborCount(map,row,col))
{
  case 0:
  case 1:newmap[row][col]=DEAD;break;
  case 2:newmap[row][col]=map[row][col];break;
  case 3:newmap[row][col]=ALIVE;break;
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:newmap[row][col]=DEAD;break;
}
CopyMap(map,newmap);
WriteMap(map);
printf("Do you want to see new");
}
while(UserSaysYes());
}



void Initialize(Grid map)
{
int row,col;
printf("This program is a simulation of the game of life.\nThe grid has a size of %d rows and %d colums.\n",MAXROW,MAXCOL);
for(row=0;row<=MAXROW+1;row++)
{
for(col=0;col<=MAXCOL+1;col++)
map[row][col]=DEAD;
}
printf("On each line give a pair of coordinates for living cell.\nTerminate the list with the special pair 0 0.\n");
scanf("%d%d",&row,&col);
while(row!=0||col!=0)
{
if(row>=1&&row<=MAXROW&&col>=1&&col<=MAXCOL)
map[row][col]=ALIVE;
else printf("Values are not within range.\n");
scanf("%d%d",&row,&col);
}
while(getchar()!='\n');
}


void WriteMap(Grid map)
{
int row,col;
putchar('\n');
putchar('\n');
for(row=1;row<=MAXROW;row++)
{
for(col=1;col<=MAXCOL;col++)
  {
  if(map[row][col]=ALIVE)putchar('*');
  else putchar('-');
  }
putchar('\n');
}
}


int NeighborCount(Grid map,int row,int col)
{

int i,j,count=0;
for(i=row-1;i<=row+1;row++)
for(j=col-1;j<=col+1;col++)
if(map[j]=ALIVE)count++;
if(map[row][col]=ALIVE)count--;
return count;
}



void CopyMap(Grid map,Grid newmap)
{
int row,col;
for(row=0;row<=MAXROW;row++)
for(col=0;col<=MAXCOL;col++)
map[row][col]=newmap[row][col];
}


Boolean UserSaysYes()
{
int c;
printf("(y,n)?");
do{
while((c=getchar())=='\n')
;
if(c=='y'||c=='Y'||c=='n'||c=='N')
return(c=='y'||c=='Y');
printf("please respond by typing one of the letters y or n\n");
}
while(1);
}

其中common.h头函数为:
#include<stdio.h>
#include<stdlib.h>
typedef enum Boolean{FAlSE,TRUE}Boolean;
void Error(char*);
void Warning(char*);

life.h头函数为:
#define MAXROW 20
#define MAXCOL 60
typedef enum state{DEAD,ALIVE}State;
typedef State Grid[MAXROW+2][MAXCOL+2];
void CopyMap(Grid map,Grid newmap);
Boolean UserSaysYes(void);
void Initialize(Grid map);
int NeighborCount(Grid map,int row,int column);
void WriteMap(Grid map);
语法错误没有,错在功能。
顶端 Posted: 2007-04-12 20:43 | [楼 主]
我来我网·5come5 Forum » 程序员之家

Total 0.006570(s) query 4, Time now is:11-27 07:45, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号