| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2734 人关注过本帖
标题:为何会出现error C2198: 'create' : too few actual parameters呢?求大神帮 ...
只看楼主 加入收藏
随心随缘
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-3-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
为何会出现error C2198: 'create' : too few actual parameters呢?求大神帮忙看一下
已知稀疏矩阵用三元组表示,编写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);
}
搜索更多相关主题的帖子: include actual create 三元 
2014-03-23 20:31
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:20 
//创建三元组
spmatrix *create(spmatrix *T)     //---------------定义时函数有参数


A=create();
    //---------------主函数中调用时函数无参数   --- 所以出现编译错误

一般建立链表的函数无参,但返回链表的头指针。你的函数正好相反。你修改一下创建三元组的函数吧。
收到的鲜花
  • 随心随缘2014-03-23 22:20 送鲜花  3朵   附言:我很赞同
2014-03-23 21:32
快速回复:为何会出现error C2198: 'create' : too few actual parameters呢?求 ...
数据加载中...
 
   



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

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