稀疏矩阵转化成转置矩阵错误
#include<iostream>using namespace std;
#define m 100
typedef struct element
{
int val;
int row,col;
}elem;
elem b,c;
void create(int row,int col,int &i){
int p,q,a;
i = 0;
printf("请输入稀疏矩阵:\n");
for(p = 0;p<row;p++)
for(q =0;q<col;q++){
scanf("%d",&a);
if(a !=0){
b.row = p;
b.col = q;
b.val = a;
i++;
}
}
}
void print(elem a[],int i,int j){
int k = 0;
for(int p = 0;p<i;p++){
for(int q =0;q<j;q++){
if(a.row == p&&a.col == q){
printf("%d",a.val);
k++;
}
else printf("0");
}
printf("\n");
}
}
void transpose(elem b[],elem c[],int n,int t)
{
int i,j,k;
int *num = new int,*pot = new int ;
for(j = 0;j<n;j++)num = 0;
for(i = 0;i<t;i++)num.col]++;
for(pot = 0,j = 1;j<n;j++)pot = pot*num;
for(i = 0;i<t;i++)
{
j = b.col;
k = pot;
c.row = j,c.col = b.row,c.val = b.val;
pot++;
}
}
void main(){
int ro,co,a;
printf("请输入稀疏矩阵的行和列数:");
scanf("%d%d",&ro,&co);
create(ro,co,a);
transpose(b,c,co,a);
printf("转置矩阵:\n");
print(c,co,ro);
}
我用的是C++,怎么改? //程序逻辑一时半会难以理顺,改了一下语法错误。
#include<iostream>
using namespace std;
#define m 100
typedef struct element
{
int val;
int row,col;
}elem;
elem b,c;
void create(int row,int col,int &i){
int p,q,a;
i = 0;
printf("请输入稀疏矩阵:\n");
for(p = 0;p<row;p++)
for(q =0;q<col;q++)
{
scanf("%d",&a);
if(a !=0)
{
//b是个全局数组,必须以数组下标的方式访问
b.row = p;
b.col = q;
b.val = a;
i++;
}
}
}
void print(elem a[],int i,int j){
int k = 0;
for(int p = 0;p<i;p++){
for(int q =0;q<j;q++){
if(a.row == p&&a.col == q){
printf("%d",a.val);
k++;
}
else printf("0");
}
printf("\n");
}
}
void transpose(elem b[],elem c[],int n,int t)
{
int i,j,k;
int *num = new int,*pot = new int ;
for(j = 0;j<n;j++)num = 0;
//同样的错误
for(i = 0;i<t;i++)num.col]++;
for(pot = 0,j = 1;j<n;j++) pot = pot*num;
for(i = 0;i<t;i++)
{
//同样的错误
j = b.col;
k = pot;
c.row = j,c.col = b.row,c.val = b.val;
pot++;
}
}
void main()
{
int ro,co,a;
printf("请输入稀疏矩阵的行和列数:");
scanf("%d%d",&ro,&co);
create(ro,co,a);
transpose(b,c,co,a);
printf("转置矩阵:\n");
print(c,co,ro);
} xieglt 发表于 2020-10-22 08:41
//程序逻辑一时半会难以理顺,改了一下语法错误。
改了还是不行 卡卡西曦 发表于 2020-10-22 18:52
改了还是不行
它是显示有scanf那两行错了 本帖最后由 xieglt 于 2020-10-22 19:33 编辑
卡卡西曦 发表于 2020-10-22 18:57
它是显示有scanf那两行错了
是vc20xx吗?如果是的话
scanf 错了就用 scanf_s
我用的vc6.0,没法给你测。 xieglt 发表于 2020-10-22 19:21
是vc20xx吗?如果是的话
scanf 错了就用 scanf_s
已找人解决
页:
[1]