数据结构课程设计矩阵的运算文档格式.docx

上传人:b****6 文档编号:17764154 上传时间:2022-12-09 格式:DOCX 页数:14 大小:57.35KB
下载 相关 举报
数据结构课程设计矩阵的运算文档格式.docx_第1页
第1页 / 共14页
数据结构课程设计矩阵的运算文档格式.docx_第2页
第2页 / 共14页
数据结构课程设计矩阵的运算文档格式.docx_第3页
第3页 / 共14页
数据结构课程设计矩阵的运算文档格式.docx_第4页
第4页 / 共14页
数据结构课程设计矩阵的运算文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构课程设计矩阵的运算文档格式.docx

《数据结构课程设计矩阵的运算文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计矩阵的运算文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构课程设计矩阵的运算文档格式.docx

输入两个两行三列的矩阵,在第一个矩阵里面第一行第一列有个数据20,其余为0,在第二个矩阵里面第一行第二列中有个数据30,其余为0,则输出的结果为一个两行三列的矩阵,其中第一行第一列数据为20,第一行第二列数据为30,其余为0。

算法3:

矩阵的减法运算

i中存放矩阵的行数,j中存放矩阵的列数,二维数组b中存放每个数据。

矩阵相减后的另一个新矩阵。

输入两个两行三列的矩阵,在第一个矩阵里面第一行第一列有个数据20,其余为0,在第二个矩阵里面第一行第一列中有个数据30,其余为0,则输出的结果为一个两行三列的矩阵,其中第一行第一列数据为-10,其余为0。

算法4:

矩阵的乘法运算

输入两行两列的矩阵,第一个矩阵里面第一行第一列有个数据2第二列有个数据3,

其余为0,在第二个矩阵里面第一行第一列有个数据2第二列中有个数据3,其余为0,则输出的结果为一个两行两列的矩阵,其中第一行第一列数据为4,第二列为6,第一行第二列数据为30,其余为0。

算法五:

矩阵的逆运算

矩阵进行逆运算完后的另一个新矩阵。

输入三行三列的矩阵,第一个矩阵里面第一行第一列有个数据3个数据分别为1,2,3;

第二行的数据分别为2,2,1;

第三行的暑假分别为3,4,3;

则输出的结果为三行三列矩阵,其中第一行的数据为1,3,-2;

第二行的数据分别为-1.5,-3,2.5;

第三行的数据分别为1,1,-1。

三、课程设计中遇到的难点及解决办法

1、在转置的过程中,要求把转置后的矩阵输出出来,因为用的是三元组顺序表的存储形式,所以不知道怎么去实现,然后通过进一步思考,运用先把一个矩阵存入零元素,然后在对其进行更改,最后完成了此项的工作。

2、就是对于矩阵的乘法运算和逆运算,掌握的不够熟练,先是通过书籍对于矩阵的乘法和逆运算得到更深的了解,然后通过一步步写程序最后实现了矩阵的乘法运算和逆运算。

四、总结

通过此次课程设计,让我对于编程有了更深的认识,老师的精心指导让我学会到了很多,不仅仅是代码,最主要的让我的思维开阔了很多,在这个过程中,通过不断的尝试,不断的修改,最终克服了困难,完成了自己的任务,心里有种无比的喜悦,但同时又感觉到了自己的知识面的狭隘,还有好多知识的海洋还没有畅游,等待自己将是一回更大的考验。

对于现在的自己,对学习程序还是有很大的兴趣,它让我体验到了很多的快乐,我要进步跟进现在的课程,努力去发展自己,按照老师说的最主要的是具有了编程的思想,则具有了编程的能力,我想我可以成功完成自己的目标。

五、附录—主要源程序代码及运行结果

1、主要源程序代码:

#include<

stdio.h>

#definemax100

#definemaxsize100typedeffloatelemtype;

typedefstruct

{floatb[max][max];

inti;

//矩阵的行数

intj;

//矩阵的列数

}tsmatrix;

typedefstruct{

inti,j;

//该非零元的行下标和列下标

elemtypee;

}triple;

{tripledata[maxsize+1];

//非零元三元组,data[0]未用

intmu,nu,tu;

//矩阵的行数、列数和非零元个数}sqlist;

voidzhuanzhi(sqlists1,tsmatrix&

l2)//矩阵的转置

{sqlists2;

intcol,t9,p,q,a1,b1;

intnum[100],copt[100];

s2.mu=s1.mu;

s2.nu=s1.nu;

s2.tu=s1.tu;

if(s2.tu>

0)

{for(col=1;

col<

=s1.nu;

++col)num[col]=0;

for(t9=1;

t9<

=s1.tu;

++t9)

++num[s1.data[t9].j];

//求s1中每一列含非零元个数

copt[1]=1;

//求第col列中第一个非零元在s2.data中序号for(col=2;

++col)copt[col]=copt[col-1]+num[col-1];

for(p=1;

p<

++p)

{col=s1.data[p].j;

q=copt[col];

s2.data[q].i=s1.data[q].j;

s2.data[q].j=s1.data[q].i;

s2.data[q].e=s1.data[q].e;

++copt[col];

l2.b[s2.data[q].i][s2.data[q].j]=s2.data[q].e;

}

printf("

转置后的数据是:

\n"

);

 

for(a1=1;

a1<

a1++)

{for(b1=1;

b1<

=s1.mu;

b1++){printf("

%10.3f"

l2.b[a1][b1]);

\t"

************************************"

voidjiafa(tsmatrixl4,tsmatrixl5)//矩阵的加法

{tsmatrixl6;

for(intt=0;

t<

l4.i;

t++){for(intt1=0;

t1<

l4.j;

t1++)l6.b[t][t1]=l4.b[t][t1]+l5.b[t][t1];

}printf("

矩阵加完后的结果:

f****************************

**\n"

for(intt2=0;

t2<

t2++){for(intt3=0;

t3<

t3++)

{printf("

l6.b[t2][t3]);

}for(intt2=0;

矩阵的乘法

voidchengfa(tsmatrixl4,tsmatrixl5)//

{tsmatrixl6;

t<

t++)

for(intt1=0;

l5.j;

t1++)

{l6.b[t][t1]=0;

for(intk=0;

k<

k++)

l6.b[t][t1]+=l4.b[t][k]*l5.b[k][t1];

矩阵乘完后的结果:

******************************\n"

t2++)

{for(intt3=0;

{tsmatrixs1;

floatt,x;

intk,i,j;

for(i=0;

i<

s.i;

i++)

for(j=0;

j<

(2*s.i);

j++)

{if(j<

s.i)s1.b[i][j]=s.b[i][j];

elseif(j==s.i+i)s1.b[i][j]=1.0;

elses1.b[i][j]=0.0;

{for(k=0;

{if(k!

=i)

{t=s1.b[k][i]/s1.b[i][i];

{x=s1.b[i][j]*t;

s1.b[k][j]=s1.b[k][j]-x;

}}

{t=s1.b[i][i];

s1.b[i][j]=s1.b[i][j]/t;

floaty=1.0;

i++)y=y*s1.b[i][i];

if(y==0.0)

对不起,您输入的矩阵没有逆矩阵"

else{for(i=0;

s.b[i][j]=s1.b[i][j+s.i];

矩阵逆运算后的结果:

{for(j=0;

j++)printf("

s.b[i][j]);

printf("

}}}

voidmain()

{tsmatrixl,l1,l3;

sqlists;

intm,n,m1,n1,n4,n5,t,t1,t2,t3,t4,t5,t6,t7,t8;

do{printf("

请输入你要进行的操作:

\n"

3\n

矩阵转置运算请按1\n矩阵的加法运算请按2\n矩阵的乘法运算请按

矩阵的减法运算请按4\n矩阵的逆运算请按5\n结束请按0:

scanf("

%d"

&

m1);

if(m1==1)

请输入你要转置矩阵的行数、列数和非零元的个数\n"

t1);

t2);

t3);

s.mu=t1;

s.nu=t2;

s.tu=t3;

请输入你要转置矩阵非零元的行下标、列下标(从[1][1]开始由左至右由上到下)及其数据(按行逐个输入)\n"

for(t4=1;

t4<

=s.tu;

t4++)

{scanf("

t5);

t6);

s.data[t4].i=t5;

s.data[t4].j=t6;

%f"

s.data[t4].e);

for(t7=1;

t7<

=s.nu;

t7++)

{for(t8=1;

t8<

=s.mu;

t8++)

l1.b[t7][t8]=0.0;

zhuanzhi(s,l1);

if(m1==2)

{

您选择进行的操作是矩阵的加法运算\n\n"

n);

m);

l.i=n;

l.j=m;

l3.i=n;

l3.j=m;

请输入第一个%d行%d列的矩阵\n"

l.i,l.j);

{for(t=0;

l.i;

for(n1=0;

n1<

l.j;

n1++)scanf("

l.b[t][n1]);

请输入第二个%d行%d列的矩阵\n"

l3.i,l3.j);

for(n4=0;

n4<

l3.i;

n4++)

{for(n5=0;

n5<

l3.j;

n5++)

l3.b[n4][n5]);

jiafa(l,l3);

if(m1==3)

阵的行数方可进行计算)\n\n"

请输入第一个矩阵的行数和列数:

scanf("

n1++)

请输入第二个矩阵的行数和列数:

n1);

l3.i=n1;

l3.j=m1;

chengfa(l,l3);

if(m1==4)

您选择进行的操作是矩阵的减法运算\n\n"

请输入矩阵的行数和列数:

l.i=n;

jianfa(l,l3);

if(m1==5)

您选择进行的操作是矩阵的逆运算\n\n"

请输入矩阵的维数(即行和列相等的矩阵):

l.j=n;

请输入%d行%d列的矩阵\n"

niyunsuan(l);

}}while(m1!

=0);

2、

运行结果(如下图):

(1)、执行的首界面:

〔7回丨厉I

‘■JSJfaJHIfaJial■iaihJ,hi2,Ldh■也

•W參竞结闵\炖匚noEoEVisjal$tudio\Commor\M^Dev^8\Bin\Cebug\5fd.eier

歿直运算请按1柄加法运鼻请:

[髒養蹩堡屮址运第请抉

(2)、矩阵的转置运算:

■G'

啟拒结甘."

vlicroEc/ft7suaIStudio'

CcmmonVM5Dev^B\Bin\tebug-sfd.e>

e'

1卄

1234栗卄丄按按擾-W浚士早冃土冃安L丁E主養昱霍进*算运运运“畀要"

运袪注迭运0:

尔卄置加乘诚逆按丿卄書的的的请

層选择进行的操忙是矩阵的转置运覧[青输入你要转置柜阵的行数、列数和非零元的个数请BA你蠻荐置矩阳E零元的彳rr标、列下标t从⑴⑴开始庄左至右由上到f戍其数据t按个磕X?

1232

转置后的数据是:

幕KKKICK3CX梵耳插MNWNMT梵比寰注共基寰廉8(

0,0000.000

32.0000.000

艮进讦的操作;

■*ttuidic\Cdmrron\MDe-/^£

\Gin\Debugd.exe"

请输入第一个钉代列的矩阵

2

您送择诜行的輾作是矩阵的加法运算请输入矩陆的行数和列数:

请输入笫二个2行北列的矩阵

13

(4)、矩阵的减法运算:

F

青土<

戶怖mh圭冃JuJ_lrtJIJJ—TP-运运运算法袪満倉阳-T*r~r-T*rrj*F~r!

.T一产阡I-炸弔

请输人矩眩的行数和列熱

请艳入第一个刘亍2列的矩库

12

阵相减后的结果;

-1.000

请输入第二个羽冠列的楚阵

!

=□

'

3:

1数気结吃\|VicrosoftVisual^tudio\Canrmor;

MiDbv9&

.BinVCebug\wtd.exe'

0*

MMM

M

w234卄按请请请按卄请*MX请卄算运运运*卄运法S法运B:

z辭的的的请

HHEEELUJE士匸”

二234

-1615一一按请请请按

=请

„„算运运运算一运法法袪运B:

„„奮的的的请卄„_^^^束卄

X

疆薯餐粵歩阵的;

亍数方可进行计算〉

青输入第一个矩阵的行数和列救:

请输入第一个彭刃列的矩阵

123

£

34

MKHKNKMKMKMMXKM-MMMXMMHMMMHMM~KMT

肾備*t■・!

廉釜・從科■科■・・K■■■MMiift甘禅ft

请输入第二个矩陈的右数和列姝

(6)、矩阵的逆运算:

SS

teffi-■

I-f、IF^-_n请亶一舁运运Lg畀

运」法法法一疋0;

置talsfe

临的的请

5冃至冃宀夏

您选择邀亍的操作是矩阵的世运算

请输入矩阵的维数唧行和列相等的矩阻:

肯输尔劳讲fT的唤

l.WO

-1.560-3.960

1.WU

-2-060

2.see

-i.wu

请输人怖3列比矩萍

12d

221

143

G'

裁笔塔陀\McrosoftVisual&

tudic\Corrmon\M£

De\,Q£

^lEin'

^Debuq1'

exc"

丄書F按请请语按

M运运左B的的的诘

阵隆区算E的給里:

U虏r柠青土IL青按41^1'

_1-1JJJ诰异專异诗M运运运算

B秤書需的的的诘

六、指导老师评语及成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1