求助,请高人帮忙调试,对三角矩阵的压缩转置算法

没有不重复名字了么 2011-05-03 11:47:06
把一对三角矩阵用一位数组压缩,在进行转置的算法,下面是我写的程序,调试也没有语句上的错误了,但不能运行,求高人相助,先谢过大家了!!!!

#include<stdio.h>
#include<stdlib.h>
#define max 20
#define zero 0
typedef struct{
int i,j,v;
}node;

typedef struct{
node data[max];
int m;
}TSmatrix;

TSmatrix *Setmatrix(){ //建三对角矩阵
TSmatrix *T;
T=(TSmatrix *)malloc(sizeof(TSmatrix));
printf("请输入矩阵行数或列数:");
scanf("%d",&T->m);
printf("建立三对角矩阵:\n");
printf("输入第一行的两个数:\n");
scanf("%d %d",&T->data[0].v,&T->data[1].v);
T->data[0].i=0;
T->data[0].j=0;
T->data[1].i=0;
T->data[1].j=1;
printf("输入第二行至第%d行的数(每行3个):\n",T->m-1);
int t=2;
for(int p=1;p<T->m-1;p++)
for(int q=p-1;q<p+2;q++)
{
T->data[t].i=p;
T->data[t].j=q;
scanf("%d",&T->data[t].v);
t++;
}
printf("输入最后一行的两个数:\n");
scanf("%d %d",&T->data[T->m-2].v,&T->data[T->m-1].v);
T->data[T->m-2].i=T->m-1;
T->data[T->m-2].j=T->m-2;
T->data[T->m-1].i=T->m-1;
T->data[T->m-1].j=T->m-1;
return T;
}

TSmatrix *Trabsmatrix(TSmatrix *T){ //三对角矩阵转置
int n,temp;
TSmatrix *F;
F=(TSmatrix *)malloc(sizeof(TSmatrix));
F->m=T->m;
for(n=0;n<3*T->m-2;n++){ //将结点信息存入新三元组表中
temp=2*T->data[n].j+T->data[n].i; //计算待存入三元数组下标
F->data[temp].i=T->data[n].j;
F->data[temp].j=T->data[n].i;
F->data[temp].v=T->data[n].v;
}
return F;
}

void TSmatrixout(TSmatrix *T){ //三对角矩阵输出
int a,b,n;
n=0;
for(a=0;a<T->m;a++){
for(b=0;b<T->m;b++){
if(T->data[n].i==a&&T->data[n].j==b){
printf("%d ",T->data[n].v);
n++;
}
else
printf("%d ",zero);
}
printf("\n");
}
}

void main(){
TSmatrix *T;
T=Setmatrix();
printf("三对角矩阵:\n");
TSmatrixout(T);
T=Trabsmatrix(T);
printf("转置后三对角矩阵:\n");
TSmatrixout(T);
}
...全文
232 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我跟踪了几步,也找到了一些东西,但不懂啊!
这些是写了断电的结果

TSmatrix *Trabsmatrix(TSmatrix *T){ //三对角矩阵转置
int n,temp;
TSmatrix *F;
F=(TSmatrix *)malloc(sizeof(TSmatrix));
F->m=T->m;
for(n=0;n<3*T->m-2;n++){ //将结点信息存入新三元组表中
temp=2*T->data[n].j+T->data[n].i; //计算待存入三元数组下标
F->data[temp].i=T->data[n].j;
F->data[temp].j=T->data[n].i;
F->data[temp].v=T->data[n].v;
}
return F;
}
指向这一句,但看不出来有什么错误

Trabsmatrix(TSmatrix * 0x005e2a50) line 52 + 22 bytes
main() line 80 + 9 bytes

还有,恢复怎么插入本机截图啊,不会诶
tomatobin 2011-05-03
  • 打赏
  • 举报
回复
和我的想法差不多,
mhljxf 2011-05-03
  • 打赏
  • 举报
回复
代码,真麻烦!
mhljxf 2011-05-03
  • 打赏
  • 举报
回复
代码也只能不断跟踪,没有别的办法!
ouyh12345 2011-05-03
  • 打赏
  • 举报
回复
下断点,单步调试,查看变量

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧