| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:这个。。。输出为什么没有!!?
取消只看楼主 加入收藏
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
这个。。。输出为什么没有!!?
头文件

//杨氏矩阵,1~9填入3*3矩阵,由左向右递减,由上向下递减。
#include<iostream>
using namespace std;

class grid
{
public:
    void outputjz();           //输出矩阵
    void arrange();            //求解并输出
    grid()                     //构造函数
    {
        arrange();
    }
private:
    int board[3][3];
    void outputRowBoard()     //输出格线行
    {
        int i;
        cout<<"+";
        for(i=0;i<5;i++)
            cout<<"-";
        cout<<"+"<<endl;
    }
    void outputRowBoard(int i)//输出数据行
    {
        int j;
        for(j=0;j<3;j++)
            cout <<"|"<<board[i][j];
        cout<<"|";
    }
    void dataInit()           //初始化数据
    {
        int i,j,k;
        for(i=0,k=1;i<3;i++)
            for(j=0;j<3;j++,k++)
                board[i][j]=k;
    }
    bool dataEnd()            //数据结束检测
    {
        int i,j,k;
        for(i=0,k=9;i<3;i++)
            for(j=0;j<3;j++,k--)
                if(board[i][j]!=k)
                    return false;
        return true;
    }
    void dataNext()           //取下个数据
    {
        int i,j;
        for(i=2;i>=0;i--)
            for(j=2;j>=0;j--)
                if(board[i][j]=9)
                    board[i][j]=1;
                else
                {
                     board[i][j]++;
                     return;
                }
    }
    bool dataDifferent()      //数据重复检测
    {
        int i,j;
        int digit[10];
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                digit[board[i][j]]=1;
        for(i=1,j=0;i<10;i++)
            j+=digit[i];
        if(j==9)
            return true;
        return false;
    }
    bool dataFirst()            //检测首位条件是否符合
    {
        if(board[0][0]!=9)
            return false;
        return true;
    }
    bool dataLast()          //检测最后位条件是否符合
    {
        if(board[2][2]!=1)
            return false;
        return true;
    }
    bool dataRow()           //检测行条件是否符合
    {
        int i,j,k,x;
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                k=board[i][j];
                x=board[i+1][j];
            }
            if(x>k)
                return false;
        }
        return true;
    }
    bool dataColumn()       //检测列条件是否符合
    {
        int i,j,k,x;
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                k=board[i][j];
                x=board[i][j+1];
            }
            if(x>k)
                return false;
        }
        return true;
    }
    bool dataCheck()
    {
        if(!dataDifferent())
            return false;
        if(!dataFirst())
            return false;
        if(!dataLast())
            return false;
        if(!dataRow())
            return false;
        if(!dataColumn())
            return false;
        return true;
    }
};
void grid::outputjz()
{
    int i;
    outputRowBoard();
    for(i=0;i<3;i++)
    {
        outputRowBoard(i);
        outputRowBoard();
    }
}
void grid::arrange()
{
    int n=1;
    for(dataInit();!dataEnd();dataNext())
    {
        if(dataCheck())
        {
            cout <<"第"<<n<<"个结果:"<<endl;
            n++;
            outputjz();
        }
    }
}

cpp文件

//讲1~9填入3*3杨氏矩阵中,输出所有可能结果。
#include<iostream>
using namespace std;

#include"young.h"

int main()
{
    grid a();
}

运行以后没有输出的,只有一个

“请按任意键继续。。。”




[ 本帖最后由 紫罗兰丹丹 于 2014-4-7 13:54 编辑 ]
2014-04-04 21:53
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
收藏
得分:0 
大神求解啊
2014-04-07 13:54
快速回复:这个。。。输出为什么没有!!?
数据加载中...
 
   



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

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