• 有理数求n*n矩阵自乘


    先写了一个有理数的类,功能不全只有用到的乘法和加法。

    并且没有考虑分母为0的恶意输入。

    #include <iostream>
    using namespace std;
    #include <vector>
    class rational
    {
          private : int son;
                    int mom;
          public : 
                 friend const rational operator+(const rational& r1,const rational& r2)
                 {
                        if(r1.son==0)
                        return rational(r2);
                        if(r2.son==0)
                        return rational(r1);
                        int t1,t2;
                        t1 = r1.son * r2.mom;
                        t2 = r2.son * r1.mom;
                        return rational(t1+t2,r2.mom*r1.mom); 
                 }
                 friend const rational operator*(const rational& r1,const rational& r2)
                 {
                        return rational(r1.son*r2.son,r2.mom*r1.mom); 
                 }
                 void simple()//约分 
                 {
                      if(son==0)
                      return;
                      int a  = son;
                      int b = mom;
                      if(a<b)
                      swap(a,b);
                      while(b!=0)
                      {
                          int temp = b;
                          b = a%b;
                          a = temp;                      
                      }
                      son = son/a;
                      mom = mom/a;
                 }
                 rational(int x,int y):son(x),mom(y){simple();}  
                 void print()
                 {
                      cout<<son<<"/"<<mom<<" ";
                 }
    };
    
    int main()
    {
        int n;
        cout<<"输入方阵的介数:"; 
        cin>>n;
        vector<vector<rational> > matrix;
        vector<vector<rational> > matrix2;
        int son,mom;
        for(int i = 0;i<n;i++)
        {
           vector<rational> tempv;
           for(int j = 0;j<n;j++)
           {
                  cin>>son>>mom;
                  tempv.push_back(rational(son,mom)); 
           }
           matrix.push_back(tempv);
        }
        for(int i = 0;i<n;i++)
        {
                 vector<rational> tempv;
                 for(int j = 0;j<n;j++)
                 {
                         rational temp = rational(0,1);
                         for(int k = 0;k<n;k++)
                         {
                                   temp = temp + matrix[i][k]*matrix[k][j];             
                         } 
                         tempv.push_back(temp);
                 }
                 matrix2.push_back(tempv);
        }
        cout<<"输入的矩阵"<<endl; 
        for(int i = 0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                {
                        matrix[i][j].print();
                }
                cout<<endl;
        }
        cout<<"得到的矩阵"<<endl; 
        for(int i = 0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                {
                        matrix2[i][j].print();
                }
                cout<<endl;
        }           
        system("PAUSE");
        return 0; 
    } 
  • 相关阅读:
    mac上命令行解压rar
    Mac上安装PHP、Apache、MySQL
    8款不错的 CI/CD工具
    Apache 强制Http跳转Https
    使用MySQL的mysqldump命令备份数据库和把数据库备份文件恢复
    MySQL主从复制和读写分离
    Nginx参数调优
    【原创】深入理解Docker容器和镜像 -- 分析了docker的命令含义
    Elasticsearch使用备忘
    通过HTTP RESTful API 操作elasticsearch搜索数据
  • 原文地址:https://www.cnblogs.com/727713-chuan/p/3352801.html
Copyright © 2020-2023  润新知