窦志臻吧 关注:10贴子:190
  • 22回复贴,共1

【技术】用c++编的求线性代数里多阶行列式的方法

只看楼主收藏回复

1l不给看
     ------欢迎光临本人的个人贴吧:http://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~


IP属地:北京1楼2013-03-09 12:30回复
    这是用C++编的 只学过c的童鞋可能看不懂


    IP属地:北京2楼2013-03-09 12:31
    回复
      #include<stdio.h>
      #include<iostream.h>
      #include<string.h>
      #include<stdlib.h>
      #include<math.h>
      #define N 10
      class Hanglie
      {
      public:
      Hanglie();
      friend void Hanglieprint(Hanglie (*h)[N]);
      friend int detcal(Hanglie (*h)[N]);
      Hanglie operator =(const Hanglie &h);
      Hanglie operator =(const int &h);
      friend Hanglie operator *(const Hanglie &h,const int &h_);
      friend Hanglie operator *(const int &h,const Hanglie &h_);
      friend Hanglie operator *(const Hanglie &h,const Hanglie &h_);
      operator int(); int numberin();
      protected:
      private:
      int number;
      int in;
      };


      IP属地:北京3楼2013-03-09 12:34
      回复
        Hanglie::Hanglie()
        {
        number=0;
        in=0;
        }
        Hanglie Hanglie::operator =(const Hanglie &h)
        {
        number=h.number;
        in=1;
        }
        Hanglie Hanglie::operator =(const int &h)
        {
        number=h;
        in=1;
        }
        Hanglie::operator int()
        {
        int tem;
        tem=number;
        }
        int Hanglie::numberin()
        {
        return in;
        }
        Hanglie operator *(const Hanglie &h,const int &h_)
        {
        Hanglie tem;
        tem.number=h.number*h_;
        tem.in=1;
        return tem;
        }
        Hanglie operator *(const int &h,const Hanglie &h_)
        {
        Hanglie tem;
        tem.number=h_.number*h;
        tem.in=1;
        return tem;
        }
        Hanglie operator *(const Hanglie &h,const Hanglie &h_)
        {
        Hanglie tem;
        tem.number=h.number*h_.number;
        tem.in=1;
        return tem;
        }


        IP属地:北京4楼2013-03-09 12:38
        回复

          void Hanglieprint(Hanglie (*h)[N])
          {
          int i,j;
          for(i=0;i<N;i++)
          {
          if(!(h[i][0].numberin()))
          {
          putchar('\n');
          continue;
          }
          for(j=0;j<N;j++)
          {
          if(!(h[i][j].numberin()))
          {
          continue;
          }
          printf("%d\t",h[i][j].number);
          }
          putchar('\n');
          }
          }


          IP属地:北京5楼2013-03-09 12:46
          回复

            int detcal(Hanglie (*h)[N])
            {
            int
            i,j,k,total;
            i=j=k=total=0;
            if(!h[0][0].numberin())
            {
            printf("\n当前没有行列式\n");
            return
            0;
            }
            if(!h[0][1].numberin())
            {
            return
            h[0][0].number;
            }
            else
            {
            for(i=0;i<N;i++)
            {
            if(!h[0][i].numberin())
            {
            break;
            }
            Hanglie
            htem[N][N];
            for(j=0;j<N-1;j++)
            {
            for(k=0;k<N-1;k++)
            {
            if(k<i)
            {
            if(h[j+1][k].numberin())
            htem[j][k]=h[j+1][k];
            }
            else
            {
            if(h[j+1][k+1].numberin())
            htem[j][k]=h[j+1][k+1];
            }
            }
            }
            total+=int(pow(-1,(1+1+i)))*h[0][i]*detcal(htem);
            }
            }
            return
            total;
            }


            IP属地:北京6楼2013-03-09 12:48
            回复
              int main()
              {
              int i,j;
              Hanglie
              h[N][N];
              printf("行列式为:\n");
              Hanglieprint(h);
              printf("行列式的结果为:%d",detcal(h));
              printf("\n\n");
              getchar();
              return 0;
              }


              IP属地:北京7楼2013-03-09 12:49
              回复
                @炎神_降世 元芳,你怎么看?


                IP属地:北京8楼2013-03-09 12:49
                收起回复
                  说好的排版呢
                       ------欢迎光临本人的个人贴吧:http://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~


                  IP属地:北京9楼2013-03-09 12:50
                  回复
                    本代码中没有赋值的部分 给行列式赋值的代码请自行添加
                    本程序可求十阶及以内的行列式(将开头宏定义处10改为10以上可以求更高阶的行列式)
                         ------欢迎光临本人的个人贴吧:http://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~


                    IP属地:北京10楼2013-03-09 13:24
                    回复
                      淫窦…真不嫌累啊


                      IP属地:黑龙江来自Android客户端11楼2013-03-09 15:33
                      回复
                        淫窦…真不嫌累啊


                        IP属地:黑龙江来自Android客户端12楼2013-03-09 15:33
                        回复
                          淫窦…真不嫌累啊


                          IP属地:黑龙江来自Android客户端13楼2013-03-09 15:33
                          收起回复
                            强悍啊窦汁,不过那个stdlib头文件是在哪里用到的啊


                            IP属地:北京来自手机贴吧14楼2013-03-14 19:12
                            回复
                              强悍啊,窦汁,不过stdlib那个是在哪里用到的啊


                              IP属地:北京来自手机贴吧15楼2013-03-14 19:14
                              收起回复