鱼C论坛

 找回密码
 立即注册
查看: 2553|回复: 2

数组(完善代码)

[复制链接]
发表于 2022-4-21 21:53:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
步骤一,定义三元组存储的结构体类型
#include <stdio.h>
#define OK 1
#define TRUE 1
#define FALSE 0
#define ROWS 4
#define COLMUNS 4
typedef int Status;
typedef int ElemType;
/*三元组顺序表的类型定义*/
#define MAXSIZE 1000
#define MAXRC 1000



typedef struct
{
        int i,j;
        ElemType e;
}Triple;
typedef struct
{
        Triple data[MAXSIZE];
        int mu,nu,tu;
}TSMatrix;
步骤二,实现稀疏矩阵的三元组存储
     (1)建立三元组表
Status CreateM(TSMatrix *M,int a[],int row,int col)
{
        int i;
int k=0; //保存非零元素个数

        for(i = 0;i < row*col;i++)
                if(a[i] != 0)
                {
                        /***完善下列代码****/
                }
        if(k) //if(k!=0)
        {
                /***完善下列代码***/
        }
        else
                return FALSE;
}        
(2)输出三元组表
void PrintM(TSMatrix* M)
{
        int k;        
        for(k = 0;k < M->tu;k++)
                printf("%4d%4d%4d\n",M->data[k].i,M->data[k].j,M->data[k].e);
}        
步骤三,编写主函数
int main(int argn,char *argv[])
{
        int a[ROWS][COLMUNS];
          int i,j;
          TSMatrix *H=(TSMatrix *)malloc(sizeof(TSMatrix)); //创建压缩数组H
          for(i=0;i< ROWS;i++)    //输入二维数组的元素值
        {
                for(j=0;j< COLMUNS;j++)
                {                        
                        scanf("%d",&a[i][j]);
                }
        }
        
        CreateM(H,*a, ROWS, COLMUNS);
        PrintM(H);        

        return 0;
        
}
步骤四,求压缩比
假设二维矩阵的元素个数为n,非零元素的个数为m,则稀疏矩阵的压缩存储的压缩比为:
&=(n* sizeof(ElemType))/(m*sizeof (Triple))

编写一个函数求压缩存储的压缩比
float compressionRatio(TSMatrix *M)
{
        /****完善下列代码*****/
}
然后再主函数调用该函数,求压缩存储的压缩比,并输出结果。
int main(int argn,char *argv[])
{
                int a[ROWS][COLMUNS];
          int i,j;
          TSMatrix *H=(TSMatrix *)malloc(sizeof(TSMatrix)); //创建压缩数组H
          for(i=0;i< ROWS;i++)    //输入二维数组的元素值
                {
                        for(j=0;j< COLMUNS;j++)
                        {                        
                        scanf("%d",&a[i][j]);
                }
        }
        
        CreateM(H,*a, ROWS, COLMUNS);
        PrintM(H);        

//调用压缩比函数,并输出结果
/****完善下列代码****/

        return 0;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-25 20:17:43 | 显示全部楼层
步骤一,定义三元组存储的结构体类型
#include <stdio.h>
#define OK 1
#define TRUE 1
#define FALSE 0
#define ROWS 4
#define COLMUNS 4
typedef int Status;
typedef int ElemType;
/*三元组顺序表的类型定义*/
#define MAXSIZE 1000
#define MAXRC 1000



typedef struct
{
        int i,j;
        ElemType e;
}Triple;
typedef struct
{
        Triple data[MAXSIZE];
        int mu,nu,tu;
}TSMatrix;
步骤二,实现稀疏矩阵的三元组存储
     (1)建立三元组表
Status CreateM(TSMatrix *M,int a[],int row,int col)
{
        int i;
int k=0; //保存非零元素个数

        for(i = 0;i < row*col;i++)
                if(a[i] != 0)
                {
                        /***完善下列代码****/
                }
        if(k) //if(k!=0)
        {
                /***完善下列代码***/
        }
        else
                return FALSE;
}        
(2)输出三元组表
void PrintM(TSMatrix* M)
{
        int k;        
        for(k = 0;k < M->tu;k++)
                printf("%4d%4d%4d\n",M->data[k].i,M->data[k].j,M->data[k].e);
}        
步骤三,编写主函数
int main(int argn,char *argv[])
{
        int a[ROWS][COLMUNS];
          int i,j;
          TSMatrix *H=(TSMatrix *)malloc(sizeof(TSMatrix)); //创建压缩数组H
          for(i=0;i< ROWS;i++)    //输入二维数组的元素值
        {
                for(j=0;j< COLMUNS;j++)
                {                        
                        scanf("%d",&a[i][j]);
                }
        }
        
        CreateM(H,*a, ROWS, COLMUNS);
        PrintM(H);        

        return 0;
        
}
步骤四,求压缩比
假设二维矩阵的元素个数为n,非零元素的个数为m,则稀疏矩阵的压缩存储的压缩比为:
&=(n* sizeof(ElemType))/(m*sizeof (Triple))

编写一个函数求压缩存储的压缩比
float compressionRatio(TSMatrix *M)
{
        /****完善下列代码*****/
}
然后再主函数调用该函数,求压缩存储的压缩比,并输出结果。
int main(int argn,char *argv[])
{
                int a[ROWS][COLMUNS];
          int i,j;
          TSMatrix *H=(TSMatrix *)malloc(sizeof(TSMatrix)); //创建压缩数组H
          for(i=0;i< ROWS;i++)    //输入二维数组的元素值
                {
                        for(j=0;j< COLMUNS;j++)
                        {                        
                        scanf("%d",&a[i][j]);
                }
        }
        
        CreateM(H,*a, ROWS, COLMUNS);
        PrintM(H);        

//调用压缩比函数,并输出结果
/****完善下列代码****/

        return 0;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-25 20:19:07 | 显示全部楼层

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表