最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)線性代數(shù)矩陣行簡(jiǎn)化

 更新時(shí)間:2020年02月03日 11:53:39   作者:MrTinTin  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)線性代數(shù)矩陣行簡(jiǎn)化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)線性代數(shù)矩陣行簡(jiǎn)化的具體代碼,供大家參考,具體內(nèi)容如下

輸入一個(gè)矩陣,可分別輸出該矩陣的階梯型和最簡(jiǎn)型。

輸入僅支持整數(shù),支持分?jǐn)?shù)形式輸出。

媽媽再也不用擔(dān)心俺的線性代數(shù)作業(yè)~

使用實(shí)例:

(實(shí)現(xiàn)格式化輸出部分寫的極為丑陋......)

#include<iostream>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<cstdio>
#include<string>
#define f(i,l,r) for(i=(l);i<=(r);i++)
#define ff(i,r,l) for(i=(r);i>=(l);i--)
#define ll long long
#define EPS 1e-6
using namespace std;
const int MAXN=105;
int n,m;
char output[MAXN];
string s;
struct frac{
  int x,y=1;
  bool operator < (const frac &tmp)const{
    return 1.0*x/y<1.0*tmp.x/tmp.y;
  }
  frac operator - (const frac &tmp){
    frac ans;
    ans.x=x*tmp.y-y*tmp.x;
    ans.y=y*tmp.y;
    ans.sim();
    return ans;
  }
  frac operator * (const frac &tmp){
    frac ans;
    ans.x=x*tmp.x;
    ans.y=y*tmp.y;
    ans.sim();
    return ans;
  }
  frac operator / (const frac &tmp){
    frac ans;
    ans.x=x*tmp.y;
    ans.y=y*tmp.x;
    ans.sim();
    return ans;
  }
  int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
  }
  void sim(){
    int d=gcd(x,y);
    x/=d;
    y/=d;
    if(x<0&&y<0){
      x=-x;
      y=-y;
    }
  }
  void write()
  {
    int i;
    char tmp[MAXN];
    int num=0;
    int nx=x,ny=y;
    s="";
    if(!nx){
      s+="0";
    }
    else{
      if(nx<0||ny<0){
        s+='-';
        nx=abs(nx);
        ny=abs(ny);
      }
      if(nx%ny==0){
        nx/=ny;
        while(nx){
          tmp[++num]='0'+nx%10;
          nx/=10;
        }
        ff(i,num,1){
          s+=tmp[i];
        }
      }
      else{
        while(nx){
          tmp[++num]='0'+nx%10;
          nx/=10;
        }
        ff(i,num,1){
          s+=tmp[i];
        }
        s+='/';
        num=0;
        while(ny){
          tmp[++num]='0'+ny%10;
          ny/=10;
        }
        ff(i,num,1){
          s+=tmp[i];
        }
      }
    }
    f(i,s.length(),7){
      cout<<" ";
    }
    cout<<s;
  }
}a[MAXN][MAXN];
void out_f()
{
  int i,j;
  f(i,1,n){
    f(j,1,m){
      cout<<1.0*a[i][j].x/a[i][j].y<<" ";
    }
    cout<<endl;
  }
}
void out()
{
  int i,j;
  f(i,1,n){
    f(j,1,m){
      a[i][j].write();
      cout<<" ";
    }
    cout<<endl;
  }
}
int find(int r,int c)
{
  int i,t=-1;
  f(i,r,n){
    if(t==-1||a[t][c]<a[i][c]) t=i;
  }
  return t;
}
void interchange(int r1,int r2)
{
  int j;
  f(j,1,m){
    swap(a[r1][j],a[r2][j]);
  }
  return;
}
void scale(int r,int c)
{
  int j;
  ff(j,m,c){
    a[r][j]=a[r][j]/a[r][c];
  }
  return;
}
void muilt(int r,int c)
{
  int i,j;
  f(i,r+1,n){
    if(!a[i][c].x) continue;
    ff(j,m,c){
      a[i][j]=a[i][j]-(a[i][c]*a[r][j]);
    }
  }
  return;
}
void gause_1()
{
  int c,r=1;
  f(c,1,n){
    int pos=find(r,c);
    if(!a[pos][c].x) continue;
    interchange(r,pos);
    scale(r,c);
    muilt(r,c);
    r++;
  }
}
void gause_2()
{
  int i,j;
  ff(i,n,1){
    f(j,i+1,n){
      a[i][n+1]=a[i][n+1]-(a[i][j]*a[j][n+1]);
      a[i][j].x=0;
    }
  }
  return;
}
int main()
{
  int i,j;
  cout<<"輸入矩陣的行數(shù)和列數(shù):"<<endl;
  cin>>n>>m;
  cout<<"輸入矩陣元素:"<<endl;
  f(i,1,n){
    f(j,1,m){
      cin>>a[i][j].x;
    }
  }
  gause_1();
  cout<<"階梯型為:"<<endl;
  out();
  gause_2();
  cout<<"最簡(jiǎn)型為:"<<endl;
  out();
  return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解C++11中的lambda函數(shù)

    一文詳解C++11中的lambda函數(shù)

    小編可以明確告訴大家:lambda函數(shù)是C++11中最重要的,使用最廣泛的,最具現(xiàn)代風(fēng)格的內(nèi)容,lambda函數(shù)的出現(xiàn)改變了C++編程的思維方式。所以快和小編學(xué)習(xí)一下C++11中l(wèi)ambda函數(shù)的使用吧
    2023-02-02
  • c++ 解析yaml文件的步驟

    c++ 解析yaml文件的步驟

    這篇文章主要介紹了c++ 解析yaml文件的步驟,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2020-12-12
  • C++設(shè)計(jì)模式之單例模式詳解

    C++設(shè)計(jì)模式之單例模式詳解

    這篇文章主要介紹了C++設(shè)計(jì)模式之單例模式,本文同時(shí)給出了數(shù)種單例模式的實(shí)現(xiàn)代碼,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • 解析sizeof, strlen, 指針以及數(shù)組作為函數(shù)參數(shù)的應(yīng)用

    解析sizeof, strlen, 指針以及數(shù)組作為函數(shù)參數(shù)的應(yīng)用

    本篇文章是對(duì)sizeof, strlen, 指針以及數(shù)組作為函數(shù)參數(shù)的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺析C和C++函數(shù)的相互引用

    淺析C和C++函數(shù)的相互引用

    C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,為了支持函數(shù)的重載,C++對(duì)全局函數(shù)的處理方式與C有明顯的不同
    2013-10-10
  • C++?ncnn模型驗(yàn)證精度實(shí)現(xiàn)代碼

    C++?ncnn模型驗(yàn)證精度實(shí)現(xiàn)代碼

    這篇文章主要介紹了C++?ncnn模型驗(yàn)證精度實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能

    C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能

    這篇文章主要介紹了C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能,如何使用OpenCV函數(shù) pyrUp 和 pyrDown 對(duì)圖像進(jìn)行向上和向下采樣,需要的朋友可以參考下
    2017-03-03
  • C和C++的區(qū)別詳解

    C和C++的區(qū)別詳解

    這篇文章主要介紹了C和C++之間的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • c語(yǔ)言static關(guān)鍵字用法詳解

    c語(yǔ)言static關(guān)鍵字用法詳解

    大家好,本篇文章主要講的是c語(yǔ)言static關(guān)鍵字用法詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++基于QWidget和QLabel實(shí)現(xiàn)圖片縮放,拉伸與拖拽

    C++基于QWidget和QLabel實(shí)現(xiàn)圖片縮放,拉伸與拖拽

    這篇文章主要為大家詳細(xì)介紹了C++如何基于QWidget和QLabel實(shí)現(xiàn)圖片縮放、拉伸與拖拽等功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評(píng)論

安吉县| 辽阳市| 朝阳县| 宜春市| 伊吾县| 界首市| 德阳市| 务川| 土默特左旗| 巴南区| 勐海县| 综艺| 靖远县| 临夏市| 铁岭市| 托克托县| 青龙| 安庆市| 嵩明县| 花莲市| 泾源县| 滕州市| 绥芬河市| 济宁市| 张家界市| 锡林郭勒盟| 新密市| 廉江市| 顺平县| 北流市| 松阳县| 保亭| 封丘县| 小金县| 苍南县| 若羌县| 海兴县| 临泽县| 阳春市| 分宜县| 镇平县|