用C++编这个程序 运行成功 追加150分

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:03:12
(因为本人分不多 不敢贸然送分 急 谢谢啦!)

目标
实现一个简单的科学分析程序:“生命”。

内容
在这个程序中,玩家有一块地。
设计并初始化一个播种模式,即在一块地中种一些种子,每一粒种子占一个格子。这时称为第1代。
+ + + + + + + +
+ + + + + + @ +
+ + + + @ @ + +
+ + + + + + + +

每个种子有八个邻居。在第n+1代,每个格子是空还是被新的种子占据依赖于它们在第n代时的状态:
生存:有两个或三个邻居的种子将存活到下一代,即仍然占据该格子;
死亡:如果有四个或更多的邻居,种子将因为过度拥挤而死亡;如果种子只有一个或零个邻居,将因为孤独而死亡;
繁殖:如果一个空格子有三个邻居,那么将会长出一粒新种子。
+ + + + + + + +
+ + @ + + @ + +
@ @ + + + @ + +
+ + + + + + + +

一种模式在经过若干代之后有以下四种可能的结局之一:
消亡;
不变——静态;
振荡——在一组模式间循环多次后在相同的位置出现相同的模式;
滑动——在一组模式间循环多次后在不同的位置出现相同的模式。
+ + + + + + + + + + + +
+ + @ + + @ + + + + + +
@ @ + + + @ + + + + + +
+ + + + + + + + + + + +
1 2 3(die)

要求
允许用户指定初始的模式或计算机自动创建初始的模式;
显示进化的过程,即历代模式;
要求至少能判断出第一种结局;
当模式消亡就停止进化,或者提示用户是否继续显示下一代,或开始新的案例,抑或退出。

注释
可用一个n*n的矩

#include <cstdlib>
#include <iostream>

using namespace std;
char f[101][101][11];
int k;
int linju(int i,int j)
{
int p=0;
if(f[i-1][j][k-1]=='@')p++;
if(f[i+1][j][k-1]=='@')p++;
if(f[i][j+1][k-1]=='@')p++;
if(f[i][j-1][k-1]=='@')p++;
if(f[i+1][j+1][k-1]=='@')p++;
if(f[i-1][j+1][k-1]=='@')p++;
if(f[i-1][j-1][k-1]=='@')p++;
if(f[i+1][j-1][k-1]=='@')p++;
return p;
}
int main(int argc, char *argv[])
{
int n,m;
int i,j;
int x;
cout<<"输入横竖列个数"<<endl;
cin>>n>>m;
cout<<"输入各数据"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>f[i][j][0];
cout<<"输入改变天数"<<endl;
cin>>x;
int tem