12.2.8--C语言:生命游戏小程序---未成功的代码

题目描述:

1、方格组成的矩阵阵列,每个方格包含一个机体,每个方格和八个机体相邻(这个是很重要的信息---因为矩阵的边界部分不符合这个条件)
也就不存在说辅助边界空间的说法--因为原来矩阵的边界是不符合程序生命体的转变条件的,本身就是固定不变化的。
2、使用函数occ(k)函数表示方格k相邻的包含机体的方格数:
3、规则:2<= occ(k)<=3方格K中的机体继续存活,否则机体死亡
     occ(k) = 3 方格中诞生一个新的机体
4、打印每一时间各个方格中机体的情况

读题也是一个反复的过程。。。。

否定之否定--感觉对了--发现错误--改正再理解。

代码还是未成功:

/**
 * 题目的意图难理解(看不明白及时网上查询)
 * 1、设计两个函数 分别求指定方格的周围八个单元中机体的存活情况
 * 2、根据上一轮查询 周围方格存活情况 判断方格自身的 存活情况
 * 3、周围存活个数与自身是否存活的变量 -- 设计在同一个结构体中
 * 4、设计一个函数(传入两个空间相同的数据)将旧数组中的内容存到新的数组中,避免变化对原数组产生影响。
 * 
*/
//根据题目的要求 5x5的矩阵实际变化的是4x4
/**
 * 必须自己思考
 * 
*/
#include <stdio.h>
#define M 5
#define N 5

//结构体的成员变量自己设计需要怎么样
struct organ
{ //单元体是否是有生命的
    char state;
    //单元体(九宫格)周围的状态
    short count;
};
//根据本身存活状态以及周围的单元存活状态判断本身的存活状态---两个二维数组是 开辟一个新的二维空间去保存的新的数组状态

//此函数没有解决边界的问题
void life(struct organ a[][N], struct organ b[][N]);
// 根据上一轮结束后状态计算每个单元其相邻的结点相邻的八个结点的存活个数 -- 为什么需要设计成这种二维数组的形式 --  不确定的行的二维数组
void occ(struct organ x[][N]);

int k = 0;
//两个数组边界都是合法(辅助空间),已经分配了空间。辅助边界部分上的单元默认都是死亡的(只有统计的存活的个数对非辅助边界部分有影响)
struct organ first[M][N], second[M][N];

void main()
{
    int i, j, num;
    short n;
    char c;
    printf("This is the initial state.\n");
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            scanf("%c", &first[i][j].state);
        }
    }
    printf("Input the number of changes.\n");
    scanf("%d", &num);
    //自定义的函数:一轮中将所的元素都计算看其中的所有单个元素的状态 完成后再改变各个单元的存活状态
    occ(first);
    k = 1;
    while (k <= num)
    {
        if (k % 2)
        {
            life(first, second);
        }
        else
        {
            life(second, first);
        }
    }
}
//根据周边的八个元素&&单元本身的状态决定====》当前元素的状态
void life(struct organ a[][N], struct organ b[][N])
{
    int i, j;
    int n;
    char c;
    for (i = 1; i < M - 1; i++)
    {
        for (j = 1; j < N - 1; j++)
        {
            n = a[i][j].count;
            c = a[i][j].state;
            if ((n >= 2 && n <= 3 && c == '*') || (n == 3 && c == ' '))
            {
                b[i][j].state = '*';
            }
            else
            {
                b[i][j].count = '+';
            }
        }
    }
    occ(b);
    printf("This is the result of %dth time.\n", k);
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            printf("%c", b[i][j].state);
        }
        printf("\n");
    }
}
//统计每个单元周围的存活的个数
void occ(struct organ x[][N])
{
    int i, j;
    short c;
    //C语言是默认从0开始 左边界存在
    for (i = 1; i < M - 1; i++)
    {
        for (j = 1; j < N - 1; j++)
        {
            c = 0;
            //如果下标表示的单元不存在怎么处理???? 不是所有的单元都存在八个相邻的单元
            if (x[i - 1][j - 1].state == '*')
                c++;
            if (x[i - 1][j].state == '*')
                c++;
            if (x[i - 1][j + 1].state == '*')
                c++;
            if (x[i + 1][j - 1].state == '*')
                c++;
            if (x[i + 1][j].state == '*')
                c++;
            if (x[i + 1][j + 1].state == '*')
                c++;
            if (x[i][j - 1].state == '*')
                c++;
            if (x[i][j + 1].state == '*')
                c++;
        }
        x[i][j].count = c;
    }
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值