第九周项目2 - 对称矩阵压缩存储的实现与应用(2)
2015-10-30 09:22
281 查看
/*Copyright (c) 2015, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:H1.cpp * 作者:辛志勐 * 完成日期:2015年10月30日 * 版本号:VC6.0 * 问题描述:用压缩形式存储对称矩阵,实现下面的操作并测试. * 输入描述:无 * 程序输出:矩阵图 */
#include <stdio.h> #define N 4 #define M 10 int value(int a[],int i,int j) { if (i>=j) return a[(i*(i+1))/2+j]; else return a[(j*(j+1))/2+i]; } void madd(int a[],int b[],int c[] ) { int i,j; for (i=0; i<N; i++) for (j=0; j<N; j++) c[i][j]=value(a,i,j)+value(b,i,j); } void mult(int a[],int b[],int c[] ) { int i,j,k,s; for (i=0; i<N; i++) for (j=0; j<N; j++) { s=0; for (k=0; k<N; k++) s=s+value(a,i,k)*value(b,k,j); c[i][j]=s; } } void disp1(int a[]) { int i,j; for (i=0; i<N; i++) { for (j=0; j<N; j++) printf("%4d",value(a,i,j)); for(int m=0;m<100000000;m++){} printf("\n"); } } void disp2(int c[] ) { int i,j; for (i=0; i<N; i++) {
for (j=0; j<N; j++)
printf("%4d",c[i][j]); printf("\n"); } } int main() { int a[M]= {1,2,3,4,5,6,7,8,9,10}; //a表示压缩存储的对称矩阵 int b[M]= {1,1,1,1,1,1,1,1,1,1}; int c1 ,c2 ; madd(a,b,c1); mult(a,b,c2); printf("a矩阵:\n"); disp1(a); printf("b矩阵:\n"); disp1(b); printf("a+b:\n"); disp2(c1); printf("a×b:\n"); disp2(c2); printf("\n"); return 0; }
知识点总结:使用value函数创建数组,然后完成加减运算。
学习心得:第一次做数组只知道输入数组前三角部分内即可,并不知道程序是怎么输出的,在今天的实践中我加了一个循环让程序放慢,才彻底清楚数组的输出。
相关文章推荐
- 第8周项目4 字符串加密
- Ubuntu 下安装minicom 及配置过程
- 基于用户认证来实现不同域的邮件转发
- 对称矩阵压缩存储的实现与应用(1)
- 优化哈希策略
- symfony
- 在页面和请求中分别使用XML Publisher生成PDF报表且自动上传至附件服务器
- .NET NLog 详解(二)
- NSLocale
- NSOrderedSet
- 文件I/O编程之sync、fsync和fdatasync函数
- android:关于主工程和library project
- C语言开发环境配置
- 第九周项目2 —对称矩阵压缩存储的实现与应用(1)
- 第10周 项目1—二叉树算法库
- 第九周项目2-对称矩阵压缩存储的实现和应用(1)
- 第四天
- 第四周项目3-单链表的应用(2)
- NSAssertionHandler
- NSCharacterSet