qt矩阵 按照下面图片 写代码

img


需要再qt中可以正常实现图片上的代码运行,多谢各位 麻烦了 谢谢各位

Qt控制台项目还是纯C++项目,稍微有点差别(头文件和返回值有差别,Qt控制台项目多一个函数调用,代码都贴出来了)。
运行结果:

img

Qt控制台项目代码:

#include <QCoreApplication>

#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
    QCoreApplication a(argc, argv);

    srand((unsigned int)time(0));

    int nmbxt = 0, nmbgz = 0; //系统和故障个数
    cout << "请输入故障数和系统数:";
    cin >> nmbgz >> nmbxt; //输入故障数和系统数量

    //矩阵
    int** matrix = new int* [nmbgz];
    for (int i = 0; i < nmbxt; i++)
        matrix[i] = new int[nmbxt];

    int* gz = new int[nmbgz]; //故障类型 0表示一定发生,1表示可能发生,2表示一定不发生
    for (int i = 0; i < nmbgz; i++)
        gz[i] = 2;

    //随机生成矩阵
    int once = 0; //
    int count = 0;
    for (int i = 0; i < nmbxt; i++)
    {
        count = 0;
        for (int j = 0; j < nmbgz; j++)
        {
            matrix[j][i] = rand() % 2;
            if (matrix[j][i] == 1)
            {
                count++;
            }
        }

        if (count == 1)
            once = 1;
    }

    //如果没有1,则随机选一个元素设置为1
    if (once == 0)
    {
        int index = rand() % nmbgz;
        int xt = rand() % nmbxt;
        for (int i = 0; i < nmbgz; i++)
            matrix[i][xt] = 0;
        matrix[index][xt] = 1;

    }


    //输出矩阵
    for (int i = 0; i < nmbgz; i++)
    {
        cout << "故障" << i+1 << "    ";
        for (int j = 0; j < nmbxt; j++)
            cout << matrix[i][j];
        cout << endl;
    }
    //计算每种故障的可能性
    int gs_must = 0;
    int gs_may = 0;
    int gs_no = 0;
    //1.先找一定会发生的故障
    for (int i = 0; i < nmbxt; i++)
    {
        int tms = 0;
        int gzindex = 0;
        for (int j = 0; j < nmbgz; j++)
        {
            if (matrix[j][i] == 1)
            {
                tms++;
                gzindex = j;
            }
        }
        
        if (tms == 1)
        {
            gz[gzindex] = 0; //一定发生
            gs_must++;
        }
            
    }
   
    //2 再找可能发生的故障
    for (int i = 0; i < nmbxt; i++)
    {
        for (int j = 0; j < nmbgz; j++)
        {
            if (matrix[j][i] == 1)
            {
                if (gz[j] == 0) //如果一定发生
                    continue;
                else
                {
                    gz[j] = 1; //可能发生
                    
                }
                    
            }
        }
       

    }


    //输出
    if (gs_must)
    {
        cout << "故障";
        for (int i = 0; i < nmbgz; i++)
        {
            if (gz[i] == 0)
                cout << i + 1 << " ";
        }
        cout << "一定发生";
    }
    
    cout << ",故障";
    for (int i = 0; i < nmbgz; i++)
    {
        if (gz[i] == 1)
        {
            gs_may++;
            cout << i + 1 << " ";
        }

    }
    cout << "可能发生";

    
    if (gs_must + gs_may < nmbgz)
    {
        cout << ",故障";

        for (int i = 0; i < nmbgz; i++)
        {
            if (gz[i] == 2)
                cout << i + 1 << " ";
        }
        cout << "一定不发生" << endl;
    }

   
    return a.exec();
}


纯C++代码:

//#include <QCoreApplication>

#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
    //QCoreApplication a(argc, argv);

    srand((unsigned int)time(0));

    int nmbxt = 0, nmbgz = 0; //系统和故障个数
    cout << "请输入故障数和系统数:";
    cin >> nmbgz >> nmbxt; //输入故障数和系统数量

    //矩阵
    int** matrix = new int* [nmbgz];
    for (int i = 0; i < nmbxt; i++)
        matrix[i] = new int[nmbxt];

    int* gz = new int[nmbgz]; //故障类型 0表示一定发生,1表示可能发生,2表示一定不发生
    for (int i = 0; i < nmbgz; i++)
        gz[i] = 2;

    //随机生成矩阵
    int once = 0; //
    int count = 0;
    for (int i = 0; i < nmbxt; i++)
    {
        count = 0;
        for (int j = 0; j < nmbgz; j++)
        {
            matrix[j][i] = rand() % 2;
            if (matrix[j][i] == 1)
            {
                count++;
            }
        }

        if (count == 1)
            once = 1;
    }

    //如果没有1,则随机选一个元素设置为1
    if (once == 0)
    {
        int index = rand() % nmbgz;
        int xt = rand() % nmbxt;
        for (int i = 0; i < nmbgz; i++)
            matrix[i][xt] = 0;
        matrix[index][xt] = 1;

    }


    //输出矩阵
    for (int i = 0; i < nmbgz; i++)
    {
        cout << "故障" << i+1 << "    ";
        for (int j = 0; j < nmbxt; j++)
            cout << matrix[i][j];
        cout << endl;
    }
    //计算每种故障的可能性
    int gs_must = 0;
    int gs_may = 0;
    int gs_no = 0;
    //1.先找一定会发生的故障
    for (int i = 0; i < nmbxt; i++)
    {
        int tms = 0;
        int gzindex = 0;
        for (int j = 0; j < nmbgz; j++)
        {
            if (matrix[j][i] == 1)
            {
                tms++;
                gzindex = j;
            }
        }
        
        if (tms == 1)
        {
            gz[gzindex] = 0; //一定发生
            gs_must++;
        }
            
    }
   
    //2 再找可能发生的故障
    for (int i = 0; i < nmbxt; i++)
    {
        for (int j = 0; j < nmbgz; j++)
        {
            if (matrix[j][i] == 1)
            {
                if (gz[j] == 0) //如果一定发生
                    continue;
                else
                {
                    gz[j] = 1; //可能发生
                    
                }
                    
            }
        }
       

    }


    //输出
    if (gs_must)
    {
        cout << "故障";
        for (int i = 0; i < nmbgz; i++)
        {
            if (gz[i] == 0)
                cout << i + 1 << " ";
        }
        cout << "一定发生";
    }
    
    cout << ",故障";
    for (int i = 0; i < nmbgz; i++)
    {
        if (gz[i] == 1)
        {
            gs_may++;
            cout << i + 1 << " ";
        }

    }
    cout << "可能发生";

    
    if (gs_must + gs_may < nmbgz)
    {
        cout << ",故障";

        for (int i = 0; i < nmbgz; i++)
        {
            if (gz[i] == 2)
                cout << i + 1 << " ";
        }
        cout << "一定不发生" << endl;
    }

    return 0;
    //return a.exec();
}