为何会出现error C2198: 'create' : too few actual parameters呢?

来源:互联网 发布:linux显示所有用户 编辑:程序博客网 时间:2024/04/29 07:23
已知稀疏矩阵用三元组表示,编写C=A*B的算法。#include<stdio.h> #include<stdlib.h>    #define smax 30 typedef int datatype;typedef struct {       int i,j;                 //行标、列标         datatype e;              //非零元素 }node;  typedef struct{      int r,c,n;               //行数r、列数c、非零元素个数n      node data[smax];         //非零三元组表       int numr[smax];          //每行非零元素的个数}spmatrix;//创建三元组spmatrix *create(spmatrix *T)        {       int i,j,element;     printf("请输入矩阵的行数:\n");      scanf("%d",&T->r);      printf("请输入矩阵的列数:\n");      scanf("%d",&T->c);      printf("请输入矩阵元素,按行输入:\n");     T->n=0;      for(i=0;i<T->r;i++)      {          T->numr[i]=T->n;                for(j=0;j<T->c;j++)            {              scanf("%d",&element);                if(element)                {                  T->data[T->n].i=i;                    T->data[T->n].j=j;                    T->data[T->n].e=element;                  T->n++;                }             }     }}//输出结果矩阵void print(spmatrix *T)         {      int i,j,k,e;      for(i=0;i<T->r;i++)    {         for(j=0;j<T->c;j++)          {               e=0;               for(k=0;k<T->n;k++)               {                if(i==T->data[k].i&&j==T->data[k].j)                   {                         e=T->data[k].e;break;                    }                     printf("%4d",e);              }        }         printf("\n");      }} //两个矩阵相乘void mul(spmatrix *T1,spmatrix *T2,spmatrix *T){     int p,arow,brow,ccol,ctemp[smax],q,tp,t,k;    T->r=T1->r; T->c=T2->c; T->n=0;   //初始化       if((T1->n)*(T2->n)!=0)      {        for(arow=0;arow<T1->r;++arow)  //处理T1的每一行          {            for(k=0;k<T->c;k++)  //当前各行累加器清零                   ctemp[k]=0;               T->numr[arow]=T->n;              if(arow<T1->r-1)                   tp=T1->numr[arow+1];              else tp=T1->n;               for(p=T1->numr[arow]; p<tp;++p)  //对当前行中每个非零元素              {                    brow=T1->data[p].j;   //找到对应元在T1中的行号                   if(brow<T2->r-1)                        t=T2->numr[brow+1];                  else  t=T2->n;                   for(q=T2->numr[brow];q<t;++q)                   {                         ccol=T2->data[q].j;    //乘积在T中的列号                      ctemp[ccol]+=T1->data[p].e*T2->data[q].e;                   }               }                for (ccol=0;ccol<T->c;++ccol)   //压缩存储该行非零元素             {                if(ctemp[ccol]!=0)                   {                         T->data[T->n].i=arow;                        T->data[T->n].j=ccol;                          T->data[T->n].e=ctemp[ccol];                     T->n++;                }            }        }    }}void main(){    spmatrix *A,*B,*C;    A=create();    print(A);        B=create();    print(B);    mul(A,B,C);    print(C);}

0 0
原创粉丝点击