| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:  注册  忘记密码
 
密 码:  
共有 614 人关注过本帖
标题:这个矩阵相加的程序,怎么运行时总是不输出Q矩阵呢,急死我了
只看楼主 加入收藏
小王子的花
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2013-4-24
结帖率:100%
收藏
 问题点数:0 回复次数:0 
这个矩阵相加的程序,怎么运行时总是不输出Q矩阵呢,急死我了
#include <iostream>
#define MAXSIZE 12500
#define OK 1
#define ERROR 0
using namespace std;
typedef int ElemType;
typedef struct{
    int i,j;     //矩阵的行下标及列下标
    ElemType e;
}Triple;
typedef struct{
    Triple data[MAXSIZE+1];    //三元组表
    int mu,nu,tu;      //矩阵的行数列数及非零元个数
}TSMatrix;



int CreateSMatrix(TSMatrix &M)      //创建矩阵
{
    cout<<"请输入稀疏矩阵的行数、列数和非零元个数:"<<endl;
    cin>>M.mu>>M.nu>>M.tu;
    if((M.mu<=0)||(M.nu<=0)||(M.tu<=0)||(M.tu>M.mu*M.nu))             //判断行值、列值、元素个数是否合法  
    return ERROR;
    for(int i=1;i<=M.tu;i++)
    {
        cout<<"请输入元素坐标及数值:"<<endl;
        cin>>M.data[i].i>>M.data[i].j>>M.data[i].e;
        if((M.data[i].i<=0)||(M.data[i].j<=0))           //控制行、列符合要求
        {
            cout<<"输入错误,请重新输入"<<endl;
            cin>>M.data[i].i>>M.data[i].j>>M.data[i].e;
        }
    }
return OK;
}




int DisplaySMatrix(TSMatrix &M)      //输出矩阵
{
    int n=1;
    while(n<=M.tu)
    {
    for(int i=1;i<=M.mu;i++)
    {
        for(int j=1;j<=M.nu;j++)
        {
            if(M.data[n].i==i&&M.data[n].j==j)
            {
                cout<<M.data[n].e<<" ";
                n++;
            }
            else
            {
                cout<<"0"<<" ";
            }
        }
        cout<<endl;
    }
    cout<<endl;
    return OK;
    }
    return OK;
}








int AddSMatrix(TSMatrix &M,TSMatrix &N,TSMatrix &Q)//矩阵相加
{
    int i=1,j=1,k=1;
    Q.data[k].i=M.data[i].i;
    Q.data[k].j=M.data[i].j;
    while(i<M.tu&&j<N.tu)
    {
        if(M.data[i].i==N.data[i].i&&M.data[j].j==N.data[j].j)
        {
            Q.data[k]=M.data[i];
            Q.data[k].e+=N.data[j].e;
            i++;
            j++;
            if(Q.data[k].e!=0)k++;
            return OK;
        }
        else
        {
            if(M.data[i].i<N.data[i].i||(N.data[i].i==M.data[i].i&&M.data[j].j<N.data[j].j))
            {
                Q.data[k]=M.data[i];
                i++;
                k++;
                return OK;
            }
            else
            {
                Q.data[k]=N.data[j];
                j++;
                k++;
                return OK;
            }
        }
    }
    while(i<M.tu)
    {
        Q.data[k]=M.data[i];
        j++;
        k++;
    }
    while(j<N.tu)
    {
        Q.data[k]=N.data[j];
        i++;
        k++;
    }
    Q.tu=k;
    return OK;
 }


        
            









int main()
{
    TSMatrix M,N,Q;
    CreateSMatrix(M);
    cout<<"矩阵M:"<<endl;
    DisplaySMatrix(M);
    CreateSMatrix(N);
    cout<<"矩阵N:"<<endl;
    DisplaySMatrix(N);
    cout<<"矩阵M+N:"<<endl;
    AddSMatrix( M, N, Q);
    DisplaySMatrix(Q);
    return OK;
}







            
            
        
        
        
搜索更多相关主题的帖子: 矩阵 include 
2013-05-08 10:19
快速回复:这个矩阵相加的程序,怎么运行时总是不输出Q矩阵呢,急死我了
 
   



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

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