江苏科技大学 课程实践报告 设计题目: 计算机程序设计实践(VC++) 设计时间: 2015. 3.2 至 2015. 3.9 学 院: 数 理 学 院 专业班级: 13 级 信 息 与 计 算 科 学 1 班 学生姓名: 邢 耀 光 学号 1340501123 指导老师: 於 跃 成 2015 年 5 月 31 日 一、 实践任务7.建立一个类PHALANX,生成并显示一个折叠方阵折叠方阵如下图所示折叠方阵的生成过程为起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵具体要求如下: 1 1 2 1 2 5 10 → 3 4 → 4 3 6 11 9 8 7 12 16 15 14 13(1)私有数据成员l int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。
l int startnum:折叠方阵的起始数l int n:存放方针的层数2)公有成员函数l PHALANX (int s, int m ):构造函数,初始化成员数据l void process():生成起始数为startnum的n行方阵l void print():输出折叠方阵l ~ PHALANX( ):析构函数3)在主程序中对该类进行测试程序源代码:#include#includeclass PHALANX{ int(*p)[20]; int starnum; int n;public: PHALANX(int s,int m); void process(); void print(); ~PHALANX();};PHALANX::PHALANX(int s,int m){ starnum=s; n=m;}void PHALANX::process(){ int num=starnum; int y=n,i,j,x; p=new int[20][20]; for(x=0;x=0;j--) { p[i][j]=num; num++; } }}void PHALANX::print(){ int i,j,m=0; for(i=0;i>s>>m; PHALANX text(s,m); text.process(); text.print();}程序运行结果为:实践小结:本体难度主要在折叠方阵的构造上。
需要细心和仔细才不会出错13.建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面具体要求如下:(1)私有数据成员l int array[20]:一维整型数组l int n:数组中元素的个数2)公有成员函数l MOVE(int b[],int m):构造函数,初始化成员数据l void change():进行循环换位l void print():输出一维数组3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试程序源代码:#includeclass MOVE{ int array[20]; int n;public: MOVE (int b[],int m) { n=m; for(int i=0;i=0;i--) { array[i+3]=array[i]; } array[0]=t3; array[1]=t2; array[2]=t1; } void print() { for(int i=0;i
尤其是后三位元素的循环15.定义一个一维数组类Carray,并根据给定算法实现对原始一维数组进行线性变换这里给定的线性变换算法为:T(bx) = bT(x) + i; 其中,b为变换常量,x为变量,i为当前类中成员数组的下标值根据该算法,原始数组在变化后,当前数组元素的值是由常量b和i下标来决定的具体要求如下: (1)私有数据成员 l int *a:指针a指向一个动态分配的原始数组l int n:n表示该数组的大小l int b:线性变换的常量 (2)公有成员函数l Carray (int a[ ],int n,int x) :用给定的参数a、n和x初始化数据成员a、n和b缺省都设置为0l void Transform () :根据上述变化算法,求解数组变换l void Show( ) :在屏幕上显示数组元素l ~ Carray () :释放动态分配的空间3)在主程序中定义数组int arr[ ]={1,2,3,4,5,6,7,8,9,10}作为原始数组,int b;由键盘输入,作为线性变换的常量定义一个Carray类对象test,用arr初始化test,完成对该类的测试。
程序源代码:#includeclass Carray{ int *a; int n; int b;public: Carray(int a[],int n,int x) { this->a=new int[n]; this->n=n; b=x; for(int i=0;ia[i]=a[i]; } void Transform() { for(int i=0;i>b; Carray text(arr,m,b); text.Transform(); text.Show();}程序运行结果为:实践小结:本体难度主要在数组的变化。
16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换方阵的变换形式为:F=W*fTf为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 具体要求如下: (1)私有数据成员 l int (*a)[4]:a指向方阵数组l int w[4][4]:w为变换矩阵l int m:m表示方阵的行和列数 (2)公有成员函数l CMatrix (int a[][4],int m) :用给定的参数a和m 初始化数据成员a和m;对变换矩阵w进行初始化,要求必须用循环实现l void Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内l void show( ) :在屏幕上显示数组元素l ~ CMatrix () :释放动态分配的空间3) 在主程序中定义数组int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组定义一个CMatrix类对象test,用arr初始化test,完成对该类的测试。
程序源代码:#include#includeclass CMatrix{ int (*a)[4]; int w[4][5]; int m;public: CMatrix(int a[][4],int m) { this->a=new int[4][4]; for(int i=0。