资源描述
,目录,退出,目录,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,案例十四 趣味矩阵,本案例知识要点,数组的使用,趣味矩阵的算法设计,类的设计和使用,一、案例需求,案例描述,程序中最主要的部分是算法和数据结构。本案例用4个很有趣的矩阵来演示如何构造算法,分别如图(a)、(b)、(c)、(d)所示。,趣味矩阵示例,功能说明,显示功能选择菜单,由用户选择生成何种类型的矩阵。,选择一种矩阵后,由用户输入矩阵的行数和列数,在屏幕上显示出该矩阵。,趣味矩阵运行效果,二、案例分析,简单分析这几种矩阵的特点:,第一种矩阵的特点是从左上角开始,在围着一个“正方形”绕圈。正方形越来越大,直到充满整个矩阵。,第二种矩阵是一个蛇形矩阵,不过这个蛇盘旋的路线是沿着与对角线平行的方向来回地绕行。,第三种矩阵是一个回旋矩阵,从外到里是连续的。也可以看作是一个从外向内绕的蛇形矩阵。,第四种矩阵也是一个回旋阵,从里到外是连续的。可以看作是一个从里向外绕的蛇形矩阵。,三、案例设计,AllArray类图,主程序设计,主程序的设计相对而言就很简单了,在主函数中创建一个矩阵类对象,然后根据输入的选项来调用类中的不同成员函数,从而生成不同的矩阵,如图所示。,主程序调用流程图,四、案例实现,在ArrayDefine.h文件中,通过定义一个AllArry类来实现对各种矩阵元素的赋值。主程序FunnyArray.cpp相对比较简单,在主函数中创建一个Queen类的对象board,然后通过board调用其成员函数来实现程序功能 。,五、案例总结与提高,案例总结,本案例的关键是根据矩阵的特点对矩阵的各个元素进行赋值的算法,只有对各个矩阵的特点进行深入的剖析,才能真正理解其算法。算法理解起来不大容易,绘制矩阵时不仅要考虑绘制方向是顺时针还是逆时针,还要考虑何时改变方向,只要把握住这两点,就容易理解程序。,案例提高,在全面理解的基础上,读者可以设计更多的有趣矩阵算法,丰富案例。,
展开阅读全文