使用 c 中的结构添加稀疏矩阵(三元组形式)

高拉夫·萨胡

我目前正在做一个添加稀疏矩阵的问题。我正在使用三元组形式制作稀疏矩阵。三元组形式是通过使用 c 中的结构制成的。

struct sparse
{
    int row;
    int col;
    int val;
};

但是在做这个稀疏矩阵问题时,我遇到了一个问题,即当我按递增顺序给出非零值的索引时,我的代码只显示正确的稀疏矩阵(例如 (0 1 3),(1 2 5),(2 2 7) 等) 否则它显示不正确的矩阵。例如,如果我给出像 (0 1 3),(2 2 7),(1 2 5) 等输入,那么它显示错误的矩阵。如何解决这个问题,以便以任何索引顺序给出正确的输出?

我已经添加了我的输入和结果输出。我已经为两个稀疏矩阵做了这个。

#include<iostream>
#include<cstdio>
struct sparse
{
    int row,col,val;
};
void readmat(sparse sp[])
{
    printf("enter total number number of rows ,column of matrix and total
    of nonzero values in this\n");             
    scanf("%d %d %d",&sp[0].row,&sp[0].col,&sp[0].val);
    printf("now start entering the values by specifying index 
    position\n");
    for(int i=1;i<=sp[0].val;i++)
        scanf("%d %d %d",&sp[i].row,&sp[i].col,&sp[i].val);
}
void displaymat(sparse sp[])
{
    int k=1;
    for(int i=0;i<sp[0].row;i++)
    {
        for(int j=0;j<sp[0].col;j++)
        {
             if(k<=sp[0].val&&i==sp[k].row&&j==sp[k].col)
             {
                 printf("%d\t",sp[k].val);
                 k++;
             }
             else
                 printf("0\t");
         }
         printf("\n");
    }

}
int main()
{
    struct sparse sp1[10],sp2[10],sp3[10];
    printf("for first matrix\n");
    readmat(sp1);
    printf("for second matrix\n");
    readmat(sp2);
    displaymat(sp1);
    printf("\n\n");
    displaymat(sp2);
    printf("\n\n");
    displaymat(sp3);
    return 0;
 }`
阿尼鲁德·迪克特

更新原始答案:

乱序值没有被打印的原因是因为当三元组形式的值指向更向下的元素时,for 循环会超过所有其他可以打印的值。例如,在您的示例中,第三个元素位于 row=1, col=3 处,但是第二个元素位于 row=2,col=2 处。这将导致外部 for 循环向下推进到第 2 行。在那个时间点,循环不会返回并打印第一行。

一种方法是根据行和列进行排序,然后打印值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Redland / C ++快速插入RDF三元组

来自分类Dev

三元组的稀疏矩阵

来自分类Dev

使用RDFLib向Stardog添加包含三元组的空白节点

来自分类Dev

计算三元组的数量a * b = c

来自分类Dev

计算三元组的数量a * b = c

来自分类Dev

在python三元组中使用continue?

来自分类Dev

无法使用python SPARQLWrapper从GraphDB中删除任何三元组

来自分类Dev

使用无限性列表在Haskell中的勾股三元组

来自分类Dev

将简单的三元组矩阵(slam)转换为R中的稀疏矩阵(Matrix)

来自分类Dev

在LLVM-C API中确定和设置主机目标三元组和指令扩展

来自分类Dev

C ++ 1z为什么不将三元组与三元组一起删除?

来自分类Dev

使用SPARQL提取包含特定子字符串的三元组

来自分类Dev

使用斐波那契序列生成勾股三元组

来自分类Dev

使用LINQ获取所有可能的不同三元组

来自分类Dev

使用(x,y,value)的三元组数据创建Numpy 2D数组

来自分类Dev

为什么ILIN ANY子句不使用GIN三元组索引?

来自分类Dev

感觉“需要速度”使用reduce(into:_ :)对包含三元组元素的数组进行计数

来自分类Dev

如何仅使用三元组值对给定列的向量进行排序?

来自分类Dev

使用斐波那契序列生成勾股三元组

来自分类Dev

Freebase RDF API:使用特定尾部获取RDF三元组

来自分类Dev

在MarkLogic中使用xquery更新嵌入式三元组

来自分类Dev

使用二分搜索的三元组和

来自分类Dev

C#子表达式中的OR使用三元运算符

来自分类Dev

使用三元运算符写入流?在C ++中

来自分类Dev

C ++三元运算符使用

来自分类Dev

在String.Equals中使用C#三元

来自分类Dev

本征用三元组填充稀疏 RowMajor 矩阵

来自分类Dev

通过以三元组格式复制稀疏矩阵的下三角来创建完整的对称矩阵

来自分类Dev

是否可以使用三元运算符“?” 在C / C ++中填充数组列表?

Related 相关文章

  1. 1

    使用Redland / C ++快速插入RDF三元组

  2. 2

    三元组的稀疏矩阵

  3. 3

    使用RDFLib向Stardog添加包含三元组的空白节点

  4. 4

    计算三元组的数量a * b = c

  5. 5

    计算三元组的数量a * b = c

  6. 6

    在python三元组中使用continue?

  7. 7

    无法使用python SPARQLWrapper从GraphDB中删除任何三元组

  8. 8

    使用无限性列表在Haskell中的勾股三元组

  9. 9

    将简单的三元组矩阵(slam)转换为R中的稀疏矩阵(Matrix)

  10. 10

    在LLVM-C API中确定和设置主机目标三元组和指令扩展

  11. 11

    C ++ 1z为什么不将三元组与三元组一起删除?

  12. 12

    使用SPARQL提取包含特定子字符串的三元组

  13. 13

    使用斐波那契序列生成勾股三元组

  14. 14

    使用LINQ获取所有可能的不同三元组

  15. 15

    使用(x,y,value)的三元组数据创建Numpy 2D数组

  16. 16

    为什么ILIN ANY子句不使用GIN三元组索引?

  17. 17

    感觉“需要速度”使用reduce(into:_ :)对包含三元组元素的数组进行计数

  18. 18

    如何仅使用三元组值对给定列的向量进行排序?

  19. 19

    使用斐波那契序列生成勾股三元组

  20. 20

    Freebase RDF API:使用特定尾部获取RDF三元组

  21. 21

    在MarkLogic中使用xquery更新嵌入式三元组

  22. 22

    使用二分搜索的三元组和

  23. 23

    C#子表达式中的OR使用三元运算符

  24. 24

    使用三元运算符写入流?在C ++中

  25. 25

    C ++三元运算符使用

  26. 26

    在String.Equals中使用C#三元

  27. 27

    本征用三元组填充稀疏 RowMajor 矩阵

  28. 28

    通过以三元组格式复制稀疏矩阵的下三角来创建完整的对称矩阵

  29. 29

    是否可以使用三元运算符“?” 在C / C ++中填充数组列表?

热门标签

归档