投入产出问题1(矩阵求和、转置、列和)
- 格式:doc
- 大小:68.00 KB
- 文档页数:6
河北工业大学计算机软件技术基础(VC)课程设计报告学院管理班级管理103班姓名崔子恒 __ 学号
___101670 成绩 __ ____
一、题目:
16投入产出问题1(矩阵求和、转置、列和)
二、设计思路
1、总体设计
1)分析程序的功能
第一:编写输入程序,通过键盘先输入对应的一直量——生产关系系数A,固定资产折旧D,新创造价值Z.
第二:编写中间运算程序,通过程序求矩阵各列的和,以及矩阵的加减法、置等运算,运算出对应的结果:总投入向量x,终产出向量y,接消耗系数矩阵b。
第三:编写输出程序,输出以解决的计算投入产出的实际问题——总投入向量X,最终产出向量Y,直接消耗系数矩阵B的结果。
2)系统总体结构:
模块一:各函数的具体内容
A:两个输入函数,分别输入一维数组,二维数组。
即输入已知量。
B:中间运算函数,计算是矩阵列和,是矩阵求和,矩阵转置运算。
即计算中间变量及结果。
C:最后是输出函数,输出最后计算结果
模块二:主函数
模块三:各函数原型的声明。
a写头文件。
b变量声明:存放输入数据的数组的声明,存放中间变量的数组的声明,存放运算结果的数组的声明。
分别存放对应数据。
c输入有关操作的文字
d函数调用,在运算中自动调用对应的函数解决对应问题
2、各功能模块的设计:说明各功能模块的实现方法
模块一:各函数都通过for循环来实现各个数组之间的基本运算。
模块二:各个函数的声明,直接声明。
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。
1)困难1
函数调用是怎么用?
解决方案:
仔细阅读课本,以及同学之间的讨论,和老师的帮助。
4、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能
设计操作程序从键盘输入投入产出问题的已知数据,解决计算投入产出的实际问题。
2)准备的测试数据及运行结果
三、程序清单
如果是使用一个文件完成的程序,只需列出程序代码。
如果是使用多文件完成的程序,首先说明程序中的代码存放在哪些文件中,说明文件名(例如:本程序包含first.cpp、second.cpp、third.cpp和all.h四个文件);然后依次给出每个文件名及该文件清单,例如:
#include<iostream.h>
int A[4][4];
int a[4][4];
int D[4];
int Z[4];
int i,j,t;
int ASUM[4]={0,0,0,0};
int A1SUM[4]={0,0,0,0};
int Y1[4];
float B[4][4];
int X[4]={0,0,0,0};
void shuzu()
{
cout<<"输入生产关系矩阵 A\n";
编号:16
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
cin>>A[i][j];
cout<<endl;
} /*输入矩阵A*/
cout<<"输入固定资产折旧向量 D\n";
for(i=0;i<4;i++)
cin>>D[i]; /*输入矩阵D*/
cout<<"新创造价值向量 Z\n";
for(i=0;i<4;i++)
cin>>Z[i];
cout<<endl; /*输入矩阵Z*/
}
void liehe()
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
ASUM[i]=ASUM[i]+A[i][j]; /*求A各列的和*/
}
void touru()
{
for(i=0;i<4;i++)
X[i]= X[i]+D[i]+Z[i]; /*求总投入向量X*/
}
void zhuanzhiliehe()
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=A[i][j];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
} /*求A'*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
A1SUM[i]+=a[i][j];
}
void qiuY1()
{
for(i=0;i<4;i++)
Y1[i]=X[i]-A1SUM[i]; /*求Y1*/
}
void qiuB()
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
(float)B[i][j]=(float)A[i][j]/(float)X[j]; /*其中(float)表示强制转换数据类型*/
cout<<"\n"; /*求B*/
}
void shuchu()
{
cout<<"输入生产关系矩阵A:"<<endl;;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
cout<<A[i][j];
cout<<endl;
}
cout<<endl; /*输出矩阵A*/
cout<<"输入固定资产折旧向量D:"<<endl;
for(i=0;i<4;i++)
cout<<D[i]<<'\t';
cout<<endl; /*输出矩阵D*/
cout<<"新创造价值向量Z:"<<endl;
for(i=0;i<4;i++)
cout<<Z[i]<<'\t';
cout<<endl; /*输出矩阵Z*/
cout<<"A矩阵列和ASUM:"<<endl;
for(i=0;i<4;i++)
cout<<ASUM[i]<<'\t';
cout<<endl; /*输出矩阵ASUM*/
cout<<"总投入向量X:"<<endl;
for(i=0;i<4;i++)
cout<<X[i]<<'\t';
cout<<endl; /*输出矩阵X*/
cout<<"A转置矩阵列和A1SUM:"<<endl;
for(i=0;i<4;i++)
cout<<A1SUM[i]<<'\t';
cout<<endl; /*输出矩阵A1SUM*/
cout<<"最终产出向量Y1:"<<endl;
for(i=0;i<4;i++)
cout<<Y1[i]<<'\t';
cout<<endl; /*输出矩阵Y1*/
cout<<"直接消耗系矩阵 B:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
cout<<B[i][j]<<'\t';
cout<<endl;
} /*输出矩阵B*/
}
void main()
{
shuzu();
liehe();
touru();
zhuanzhiliehe();
qiuY1();
qiuB();
shuchu();
}
(说明:程序清单中一定要有注释。
将程序中自己编写的代码列在此处,系统自动生成的代码就不要列出了。
程序清单部分的行间距设为1行即可。
)
四、对该设计题目有何更完善的方案
1、对自己完成程序进行自我评价。
设计过程中问题重重,但经过和同学之间的讨论,以及老师的解答和我的努力最终写出了程序。
五、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
通过对该程序的编写,使我对数组,for循环以及函数的调用有了深刻的认识。
,类型如何确定以及运用方法,明白了函数调用是如何运用的。
2、收获和心得体会。
明确的知道了数组,for循环以及函数的调用有的运用。
日期:2011年6月22日。