标题:稀疏矩阵三元组存储,转置矩阵输出的最后一组原生不对,求各位帮帮忙。
只看楼主
不孤独的鲸鱼
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2017-11-3
得分:7 

#include<stdio.h>

void mat_transpose(int a[60][3],int b[60][3])

{  int m,n,t,p,q,col;
    m=a[0][0];n=a[0][1];t=a[0][2];
    b[0][0]=n;b[0][1]=m;b[0][2]=t;
    if(t>0)
      {q=1;
          for(col=0;col<n;col++)
              for(p=1;p<=t;p++)
                  if(a[p][1]==col)
                    { b[q][0]=a[p][1];b[q][1]=a[p][0];
                          b[q][2]=a[p][2];q++;}
}}


void main()
{int a[60][3],b[60][3];
  int  i,n,m,t,s;

printf("请输入非零元素的个数:\n");
scanf("%d",&t);
printf("请输入矩阵的行数:\n");
scanf("%d",&m);
printf("请输入矩阵的列数:\n");
scanf("%d",&n);
printf("请输入稀疏矩阵非零元素的三元组:");
a[0][0]=m;
a[0][1]=n;
a[0][2]=t;
for(s=1;s<=t;s++)
{for(i=0;i<=2;i++)
scanf("%d",&a[s][i]);}

printf("原三元组为:\n");
for(s=0;s<=t;s++)
{ for(i=0;i<=2;i++)
       printf("%3d",a[s][i]);
      printf("\n");}

mat_transpose(a,b);
    printf("\n");
    printf("转置后的数组:\n");
    for(s=0;s<=t;s++)
    {for(i=0;i<=2;i++)
            printf("%3d",b[s][i]);
    printf("\n");}
}



这个应该可以

Experience is a hardteacher,she gives the test first,the lesson afterwards.
2017-11-03 10:57
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 11楼 不孤独的鲸鱼
时间复杂度有点高。
2017-11-03 16:09
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 9楼 zbjzbj
那样写时间复杂度有点高。
2017-11-03 16:09
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
以下是引用炎天在2017-11-3 10:49:09的发言:



非零元素共三行三列, 那么这九个数都是要输入的了, 可是按你写的-----你自己再重新规定需要输入的个数。

你自己再重新规定需要输入的个数。 [/quote这句话什么意思?
2017-11-03 16:12
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
回复 14楼 花脸
printf("请输入行数列数,非零元素个数:\n");
 scanf_s("%d%d%d", T->m, T->n, T->len);

上面是你自己写的, 你又说输入的三行三列是非零元素, 那么非零元素一共是九个了。  很难理解你的意思。
你想转置的矩阵多大(是几行几列)?  ,  你上文写的是想转置那个三行三列,
我建议你在去看看稀疏矩阵三元组

早知做人那么辛苦!  当初不应该下凡
2017-11-03 18:24
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 15楼 炎天
转置的矩阵是三行三列的矩阵,其中有三个非零元素,转置过的矩阵也是三行三列。
不知道程序的逻辑哪里出了问题,,
2017-11-03 21:28
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
以下是引用花脸在2017-11-3 21:28:30的发言:

转置的矩阵是三行三列的矩阵,其中有三个非零元素,转置过的矩阵也是三行三列。
不知道程序的逻辑哪里出了问题

还有看看你8楼讲的,
是的,其中有三个非零元素, 另外6个元素都是0,  
1 1 3   第一行第一列 元素为3
2 2 8   第二行第二列 元素为8
3 3 5   第三行第三列 元素为5
你转置这个有什么用?

你应该转置这个
3 0 0                  5 0 0
0 8 0     ------>          0 8 0
0 0 5                  0 0 3



[此贴子已经被作者于2017-11-3 22:18编辑过]


早知做人那么辛苦!  当初不应该下凡
2017-11-03 22:16
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 17楼 炎天
请问 你这个矩阵是怎么转的,,我现在学的
2017-11-03 22:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482067-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016761 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved