【第九周 项目2-对称矩阵压缩存储的实现与应用(2)】

来源:互联网 发布:mac子弹头试色twig 编辑:程序博客网 时间:2024/06/06 12:44

/*
Copyright (c)2015级,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:对称矩阵压缩存储的实现与应用(2).cpp
作    者:胡馨月
完成日期:2016年10月27日
版 本 号:v1.0
 
问题描述:设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。
 
输入描述:无
程序输出:测试结果
*/ 

代码:


#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[][N]) 

    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[][N]) 

    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)); 
        printf("\n"); 
    } 

void disp2(int c[][N]) 

    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[N][N],c2[N][N]; 
    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; 

运行结果:

知识点总结:

对于矩阵还需要更多的学习

 

0 0
原创粉丝点击