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

来源:互联网 发布:淘宝购物返利是真的吗 编辑:程序博客网 时间:2024/06/05 03:14
/*         Copyright (c)2016,烟台大学计算机与控制工程学院         All rights reserved.         文件名称:项目2 (1).cpp         作    者:王曼       完成日期:2016年12月2日         版 本 号:v1.0                  问题描述:(1)用压缩形式存储对称矩阵,实现下面的操作并测试             void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组B             int Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值             void Assign(int b[], int e, int i, int j);//将e赋值给对应二维数组元素A[i][j],要存储到B[M]中             void Disp(int b[]);//输出压缩存储在b中的对称矩阵             void Destroy(int b[]);//销毁存储空间   输入描述:下三角数据。   程序输出:矩阵的全体输出。   */      

代码:
#include <stdio.h>     #include <malloc.h>     #define N 4    void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组B    int Value(int b[],int i,int j);//返回存储在b[M]中,对应二维数组A[i][j]的值    void Assign(int b[],int e,int i,int j);//将e赋值给对应数组元素A[i][j].要存储到B[M]中    void Disp(int b[]);//输出压缩存储在b中的对称矩阵    void Destroy(int b[]);//销毁存储空间        int main()    {        int *b1;//指向整型的指针,待初始化        int i,j;        int v;        Init(b1);         printf("请输入对称矩阵(只需要输入下三角部分即可)\n");         for(i=0;i<N;i++)         {             printf("输入第%d行的%d个数据元素: ", i+1, i+1);            for(j=0;j<=i;j++)            {                scanf("%d",&v);                Assign(b1,v,i,j);            }         }         Disp(b1);         Destroy(b1);        return 0;    }    void Init(int *&b)//为N阶对称矩阵初始化存储数据的一维数组B    {        b=(int *)malloc(sizeof(int)*N*(N+1)/2);    }    void Assign(int b[],int e,int i,int j)//将e赋值给对应数组元素A[i][j].要存储到B[M]中    {        int k;        if(i>j)        {            k=i*(i+1)/2+j;            b[k]=e;        }        else if(i<=j)        {            k=j*(j+1)/2+i;            b[k]=e;        }        }    void Disp(int b[])//输出压缩存储在b中的对称矩阵    {        int i=0;        int j=0;        while(i<N)        {            while(j<N)            {                printf("%4d",b[i*(i+1)/2+j]);                j++;            }            printf("\n");            j=0;            i++;        }        }    void Destroy(int b[])//销毁存储空间    {    free(b);    }    

运行结果:

知识点总结:

对称矩阵的操作。


0 0
原创粉丝点击