VC++编程题求解

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:01:32
目标
实现一个简单的科学分析程序:“生命”。
内容
在这个程序中,玩家有一块地。设计并初始化一个播种模式,即在一块地中种一些种子,每一粒种子占一个格子。这时称为第1代。
每个种子有八个邻居。在第n+1代,每个格子是空还是被新的种子占据依赖于它们在第n代时的状态:
生存:有两个或三个邻居的种子将存活到下一代,即仍然占据该格子;
死亡:如果有四个或更多的邻居,种子将因为过度拥挤而死亡;如果种子只有一个或零个邻居,将因为孤独而死亡;
繁殖:如果一个空格子有三个邻居,那么将会长出一粒新种子。

一种模式在经过若干代之后有以下四种可能的结局之一:
消亡;
不变——静态;
振荡——在一组模式间循环多次后在相同的位置出现相同的模式;
滑动——在一组模式间循环多次后在不同的位置出现相同的模式。
要求
允许用户指定初始的模式或计算机自动创建初始的模式;
显示进化的过程,即历代模式;
当模式消亡就停止进化,或者提示用户是否继续显示下一代,或开始新的案例,抑或退出。
提示
可用一个n*n的矩阵表示模式
我要最终程序!!!

#include <iostream>
using namespace std;
char seed[36];
char tmpseed[36];
void print()
{
for(int i = 0 ;i < 36;i++)
{
cout<<" "<<seed[i];
if((i+1)%6 == 0)
cout<<endl;
}
}

void tmpprint()
{
for(int i = 0 ;i < 36;i++)
{
cout<<" "<<tmpseed[i];
seed[i] = tmpseed[i];
if((i+1)%6 == 0)
cout<<endl;
}
}

void set()
{
for(int i = 0;i < 36;i++)
{
seed[i] = '^';
tmpseed[i] = '^';
}
int randnum;
for(int j = 7;j < 29; j++)
{
if((j%6) != 0 && ((j+1)%6) !=0)
{
randnum = 1+(int)(10.0*rand()/(RAND_MAX+1.0));
if(randnum%2 == 1)
seed[j] = '@';
else
seed[j] = '+';
}
}
}

bool isright(int num)
{
if(num <= 6 || num &g