Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: giải thuật quy hoạch tuyến tính với lập trình C

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    1

    Post giải thuật quy hoạch tuyến tính với lập trình C

    Đề: giải quy hoạch tuyến tính dạng chuẩn với hệ số là phân số bằng phương pháp đơn hình cải tiến
    Yêu cầu cài đặt các thủ tục trong chương trình như sau
    - các phép toán số học trên phân số
    - Đọc quy hoạch tuyến tinh
    - xác định pivot
    - phép biến đổi trên dòng

    chương trình phải thực hiện được như sau

    Input: là một quy hoạch tuyến tính dạng chuẩn
    Output: là các bảng đơn hình trung gian và phương pháp tối ưu của quy hoạch tuyến tính

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Code:
     //SVTH: Truong Tbien Thanh                                  //GVHD: Nguyen Thanh Qui
    //MSSV: 1071555                                             //MSCB: 1945
    //lop: DI0797A1-k33
    //mail: ttthanh55@student.ctu.edu.vn
    #include<iostream>
    #include<conio.h>
    using namespace std;
    
    class Phanso{
          private :
             int tu, mau;
          public :
             Phanso();
             Phanso(int, int);Phanso(int);
             Phanso& operator=(const Phanso&); 
            // Phanso& operator!=(const Phanso&);
             Phanso (const Phanso&);
           //  friend istream& operator>>(istream&, Phanso&);
             friend ostream& operator<<(ostream&, Phanso&);                                                                                                                                          
             void Toigian();
             float gtthuc();// tim gia tri thuc cua phan so
             Phanso operator+(int);
             int operator!=(const Phanso&);
             int operator!=(const int&);
             int operator==(const Phanso&);
             float operator>=(const float t);
             Phanso operator+(Phanso);
             Phanso operator-(int);
             Phanso operator-(Phanso);
             Phanso operator/(int);
             Phanso operator/(Phanso);
             Phanso operator*(int);
             Phanso operator*(Phanso);
             int operator>(Phanso&);
             void Nhap(int);
             void Nhap();
             
             // ham ban su dung trong viec xu li ma tran
             friend void In_matran(Phanso,int,int);
             friend void Nhap_matran(Phanso,int ,int );
             friend Phanso Nhan_matran(int,int,int);
             friend void cong(Phanso,Phanso);
             // ham xu li trong mang 
             friend void Nhap_mang(Phanso,int);
             friend void In_mang(Phanso,int);
             friend void Tach_matran(Phanso,Phanso,int,int);// theo cot
             friend void Nhap_A(Phanso,Phanso,int,int);
             friend Phanso Nhan_mang(Phanso,Phanso,int);
             friend int Nhan_matran(Phanso,Phanso ,int,int ,Phanso,int,int  );
             friend Phanso Nhan(Phanso, Phanso);
             friend void Tru_mang(Phanso,Phanso,Phanso,int);
             //ham xu ly trong viec tim ra phuong an
             friend void Xdinh_vt_matrandv(Phanso , int ,int,Phanso );
             friend void Tinh_c_t(Phanso ,Phanso ,Phanso ,Phanso ,int,int );
             friend  void Xd_i_b(Phanso , Phanso , Phanso ,int ,int);
             friend int Xd_cot_p(Phanso,int);
             friend int Xd_dong_p(Phanso,int);
             friend void Chia_cot(Phanso ,int,int,int ,int);
             friend void Khu_cot(Phanso ,int,int,int ,int);
             friend int Toi_uu(Phanso ,int,int );
             friend void Xdc_b(Phanso, int,int, Phanso,Phanso);
             friend int kt_suybien(Phanso,int );
             };
    int Nhap(){
       char str[20];
       int i=0;
       //printf("\n  Nhap vao mot so: ");
       while(1)
       {
          
          if(kbhit())  // ** neu co nhan 1 phim nao do
          {
             char c=getch();  // lay gia tri cua phim
             if(c>47 && c<58) //*** xet co phai so hay ko
             {                    // Neu la so thi nhan va hien ra
                printf("%c",c);
                str[i]=c;
                i++;
                str[i]='\0';
                
             }
             if(c==13) break;  // phim Enter
            if(c==8&& i>0)  //*** neu nhan phim Backspace thi xoa di 1 so trong chuoi so
             {
                i--;
              // system("cls");
             // for(int j=i;j>0;j--)
               str[i]='\0';
               
                
               
              //  printf("\n  Nhap mot so bat ky de tro ve: ");
                printf("%s",str);
             }
             if(i==0 && c=='-') // *** cho phep nhap dau " - " vao dau chuoi so
             {
                cout<<"-";
                str[i]=c;
                i++;
             }
          }
          else
          {
             while(1)  // giu trang thai ko nhan phim
                if(kbhit()) break;  
          }
       }
       if(str[0]=='-')
       {
          str[0]='0';
          return 0-atoi(str); 
       }
       else
          return atoi(str);
    }
    //------------------------------------------------------
    //------------cac ham xu ly tren phan so----------------
    //------------------------------------------------------
    Phanso::Phanso(){                    //ham xay dung mac nhien
          tu=1;
          mau=1;
          }           
    Phanso::Phanso(int ts, int ms){      // ham xay dung 2 doi so
          tu=ts;
          mau=ms;
          }
    Phanso::Phanso(int ts){              //ham xay dung 1 doi so
          tu=ts;
          mau=1;
          }                  
    Phanso& Phanso:: operator=(const Phanso& t){        //phep gan dau =
          tu=t.tu;
          mau=t.mau;
          return *this;
          }
    Phanso::Phanso (const Phanso& t){                   //ham xay dung sao chep
           tu=t.tu;
           mau=t.mau;
          }                
    void Phanso::Toigian(){                             // ham toi gian 
          int uc;
          if(tu>=mau)
            uc=mau;
          else 
            uc=tu;
          
          while(tu!=0||mau!=0)
                 {
                                    if(uc<0)uc++;
                                    else uc--;
                 }
          
          tu=tu/uc;
          mau=mau/uc;
          }                            
    //Nhap phanso thi chon 1, 2 thi chon so nguyen :
    void Phanso::Nhap(int x){                                           //ham nhap 
          while(x!=1&&x!=2){cout<<"\n Vui long chon lai : ";cin>>x; }
          if(x==1){
                    do{
                       if(mau==0)
                          cout<<"\n Nhap khong hop le, nhap lai : ";
                          cin>>tu;
                          char x;cin>>x;
                          cin>>mau;
                          }while(mau==0);}
          else {
               int ts;
               cin>>ts;
               tu=ts;
               mau=1;
               }                
    }
    
    void Phanso::Nhap(){
            int ts;
               cin>>ts;
               tu=ts;
               mau=1;
               }                                       
    ostream& operator<<(ostream& os,  Phanso& t){           //toan tu <<
             if(t.tu==0||t.mau==1)
               os<<t.tu;
             else{
               int uc;
             
               if(t.tu>=t.mau)
                 uc=t.mau;
               else 
                 uc=t.tu;
          
              while(t.tu!=0||t.mau!=0){
                 if(uc<0)uc++;
                 else uc--;}
          
               t.tu=t.tu/uc;
               t.mau=t.mau/uc;
               if(t.tu==0||t.mau==1)
               os<<t.tu;
               else{
                    if(t.mau<0)
                      os<<t.tu*(-1)<<"/"<<t.mau*(-1);
                      else
               os<<t.tu<<"/"<<t.mau;
               }}
             return os;
             }    
    
    Phanso Phanso::operator+(int t){                        //ham cong phan so voi so nguyen
          Phanso kq;
          if(tu+mau*t!=0){
           kq=Phanso(tu+mau*t,mau);
           kq.Toigian();}
          else kq=0; 
          return kq;
          } 
    Phanso Phanso::operator+(Phanso t){                     // ham cong 2 phan so
          Phanso kq;
          if((tu*t.mau+t.tu*mau)!=0){
            kq=Phanso(tu*t.mau+t.tu*mau,mau*t.mau);
            kq.Toigian();}
          else kq=0;  
          return kq;
          }  
    Phanso Phanso::operator-(int t){                        //ham tru phan so voi so nguyen
          Phanso kq;
          if((tu-mau*t)!=0){
          kq=Phanso(tu-mau*t,mau);kq.Toigian();}
          else
          kq=0;
          return kq;
          }  
    Phanso Phanso::operator-(Phanso t){                     //ham tru 2 phan so 
          Phanso kq;
          if((tu*t.mau-t.tu*mau)!=0){
          kq=Phanso(tu*t.mau-t.tu*mau,mau*t.mau);
          kq.Toigian();}
          else 
          kq=0;
          
          return kq;
          }   
    Phanso Phanso::operator/(int t){                        //ham chia phan so cho so nguyen
          Phanso kq;
       //   if(t==0) kq=10000;
        //  else{
          if(tu!=0){
            kq=Phanso(tu,mau*t);
            kq.Toigian();}
          else      // khong the chia mot so cho 0
          kq=Phanso(10000);  //tra ve gia tri tuy y
          return kq;         //nhung phai dac biet
          }   
    Phanso Phanso::operator/(Phanso t){                     //ham chia 2 phan so 
           Phanso kq;
          if(t.gtthuc()==(float)0) kq=Phanso(10000);
          else{
          if(tu!=0){
            kq=Phanso(tu*t.mau,mau*t.tu);
            kq.Toigian();}
          else      // khong the chia mot so cho 0
          kq=0;}
          return kq;
          }   
    Phanso Phanso::operator*(int t){                        //nhan phan so voi so nguyen
          Phanso kq;
          if(tu*t!=0){
            kq=Phanso(tu*t,mau);
            kq.Toigian();}
          else kq=0;  
          return kq;
          }  
    Phanso Phanso::operator*(Phanso t){                     //ham nhan 2 phan so 
          Phanso kq;
          if(tu*t.tu!=0){
              kq=Phanso(tu*t.tu,mau*t.mau);
              kq.Toigian();}
           else
              kq=0;
         
          return kq;
          }
    
    int Phanso::operator==(const Phanso& t)                 //toan tu ==
    {
          return((tu==t.tu)||(mau==t.mau));
          }
    float Phanso::operator>=(const float t)                 //toan tu>=
    {
          return(gtthuc()>=t);
          }
    float Phanso::gtthuc(){                                 // tim gia tri thuc cua phan so
          float x;
          if(tu==0)
            x=0;
          else 
             x=(float)tu/mau;
          return x;
          }
    int Phanso::operator!=(const Phanso& t)                //toan tu !=
    { 
          float x=gtthuc();
          float y=(float)t.tu/t.mau;
          return(x!=y);
          }
    int Phanso::operator!=(const int& t)
    {
          return(Phanso::gtthuc()!=t);
    
    
          }
    //-----------------------------------------------
    //-------- cac ham xu ly tren ma tran,mang-------
    //-----------------------------------------------
          
    
    void Nhap_matran(Phanso a[10][10],int n,int m)         // nhap ma tran n dong. m cot
    {
          for(int i=0;i<n;i++){
           for(int j=0;j<m;j++){
                cout<<"\n\t\t  + Dong "<<i+1<<" cot "<<j+1<<" : ";
               // a[i][j]=Nhap();      //dong nay khong cho mot ky tu
                //neu cho nguoi dung nhap ky tu thi dung dongsau
                a[i][j].Nhap();
                }cout<<"\n ";
                }
          }
    
    void In_matran(Phanso a[10][10],int d,int c)            // In ma tran
    {
         for(int i=0;i<c-1;i++)
         cout<<"\t  "<<"X"<<i+1;
         cout<<"\t  "<<"b";
         cout<<"\n\n";
          for(int i=0;i<d;i++){
           for(int j=0;j<c;j++){
                //In_mang(c_b,d);   
                cout<<"\t  "<<a[i][j];
                
                }
                cout<<"\n\n";      
               }
         }
    void Nhap_mang(Phanso a[10],int n)                      // Nhap gia tri cho HAM MUC TIEU
    {
         for(int i=0;i<n;i++)                               //ham nhap mang 1 chieu
         {      
           cout<<"\n\n\t   Nhap X "<<i+1<<" :  ";
             //a[i]=Nhap();  //dong nay khong cho mot ky tu
             //neu cho nguoi dung nhap ky tu thi dung dongsau
              a[i].Nhap();  
           
              
          }
    }      
    void In_mang(Phanso a[10],int n)                        //ham in mang 1 chieu
    {
         for(int i=0;i<n;i++)
         {
                 cout<<"\t  "<<a[i]; 
         }     
    } 
    
    // Nhan mang a (d phan tu) cho mang b(d phan tu)= tong
    Phanso Nhan_mang(Phanso a[10],Phanso b[10],int d)       //nhan 2 mang[d phan tu]
    {
         Phanso tong=0;
         for(int i=0;i<d;i++)
         {
               tong=tong + a[i]*b[i];
                } 
             return tong;
             }
                                                            // Nhan 2 ma tran 
    int Nhan_matran(Phanso tich[10][10],Phanso a[10][10],int d,int c,Phanso b[10][10],int d1,int c1)
    {
           Phanso f(0);
           int kq=0;
           if(c==d1)  //cot matran a==dong ma tran b
           { 
               for(int i=0;i<d;i++)
               {
                      for(int k=0;k<c1;k++)
                          {
                                tich[i][k]=0;
                                for(int j=0;j<d1;j++)
                                {
                                        tich[i][k]=tich[i][k] + a[i][j]*b[j][k];
                                }      
                           } 
               } 
                       kq=1;
                                                          
           }
      return kq;              
    }
    
         
    // a la matran chuan, b la ma matran he so A
    /*void Nhap_A(Phanso a[10][10],Phanso b[10][10],int d ,int c)
    {
           for(int i=0;i<d;i++)
               for(int k=0;k<c-1;k++)
               {
                       b[i][k]=a[i][k];
               }
    }      
                                                      // tru 2 mang            
    void Tru_mang(Phanso hieu[10],Phanso a[10],Phanso b[10],int ptu)
    {
          for(int i=0;i<ptu;i++)
             hieu[i]=a[i]- b[i];
    }
    */
    // vitri la vitri cua cot,vidu tai x2 thi virtila 1
    void Tach_matran(Phanso matran[10][10],Phanso mang[10],int d, int vitri)
    {
          for(int i=0;i<d;i++)
            mang[i]=matran[i][vitri];
    
    
    }
    // d la so phatu cua ham muc tieu, ptu la so phantu cua cua mang x, va mang c_b
    // c_T la he so ham muc tieu
    void Tinh_c_t(Phanso matran[10][10],Phanso c_b[10],Phanso c_T[10],Phanso c_t[10],int d,int c ){
          Phanso x[10],tong=0;
          for(int i=0;i<c;i++)
          {
               Tach_matran(matran,x,d,i);
              
               //In_mang(x,d); //khong nen in cot ra
               
               for(int j=0;j<d;j++) 
               {
                   tong=tong+ x[j]*c_b[j];
               }
               c_t[i]=c_T[i] - tong;
               tong=0;
               
          }
    }
    // xem lai ham nay con loi
    void Xdinh_vt_matrandv(Phanso matran[10][10], int d,int c,Phanso vitri[10]){
         Phanso x[10],tong=0, luu[10];
         int f=0,kt[10];
         
         for(int i=0;i<c;i++){
            Tach_matran(matran,x,d,i+1);
            for(int j=0;j<d;j++){
              if(matran[j][i].gtthuc()>=0){
                 tong=tong+matran[j][i];
                 f=f+1;}
                                        }
              luu[i]=tong;
              kt[i]=f;
              tong=0;
              f=0;
              }
        int k=0;      
        for(int i=0;i<c;i++){
           if(luu[i].gtthuc()==(float)1&& kt[i] >0)
              {vitri[k]=i;
               k++;  }
               }                                   
    }
    // vi tri cua ma tran don vi
    void Xdc_b(Phanso matran[10][10],Phanso c_T[10], int d,int c, Phanso c_b[10],Phanso vitri[10])
    {
         for(int i=0;i<c;i++)
          for(int j=0;j<d;j++)
          {
               if(vitri[j].gtthuc()==(float)i)
                   for(int m=0;m<d;m++)
                      if(matran[m][i]-1==0)
                         c_b[m]=c_T[i];
          }
    }    
    void Xd_i_b(Phanso matran[10][10], Phanso vitri[10], Phanso ib[10],int d,int c){  //kiem trA 
         int k=0;
         for(int i=0;i<c;i++)
         {
            for(int j=0;j<d;j++)
            {
                if(vitri[j].gtthuc()==(float)i)
                {
                  for(int m=0;m<d;m++)              
                   if(matran[m][i].gtthuc()==(float)1)
                   {
                    ib[k]=Phanso(i+1);
                    k++;
                    }
                }
            }
        } 
    }
    //--------------------------------------------------------------------------------
    int Xd_cot_p(Phanso c_t[10],int ptu)              //xac dinh cot chua pivot
    {
           Phanso max;                                //cot nay la cot max
           max=c_t[0];
           int kq=0;
           for(int i=0;i<ptu;i++)
           {
                if(c_t[i].gtthuc()>max.gtthuc()) //tim max
                   { max=c_t[i];
                     kq=i;
                     }
                          }
        return kq; //tra ve vi tri cua cot chua pivot
    }
    
    int Xd_cot_p_min(Phanso c_t[10],int ptu){
           Phanso min;
           min=c_t[0];
           int kq=0;
           for(int i=0;i<ptu;i++){
                if(c_t[i].gtthuc()<min.gtthuc())
                   { min=c_t[i];
                     kq=i;
                     }
                          }
        return kq;
    } 
    //--------------------------------------------------------------------------------
    
    int Xd_dong_p(Phanso  matran[10][10],Phanso c_t[10],int d,int c){//////////
         Phanso thuong[10],x[10],b[10],min;
         int vitri,k=0;
         vitri= Xd_cot_p(c_t,c);
        
         Tach_matran(matran,x,d,vitri); 
         Tach_matran(matran,b,d,c-1);
         for(int j=0;j<d;j++){
                 thuong[j]=b[j]/x[j];
                 }
         
         for(int i=0;i<d;i++){
           if((thuong[i].gtthuc()!=(float)10000)&&thuong[i].gtthuc()>=0 ){
                 min=thuong[i];
                 vitri=i;
                 break;}
                 }
                        
           for(int i=vitri+1;i<d;i++){
            if(thuong[i].gtthuc()>=0&& thuong[i].gtthuc()<min.gtthuc())
                {min=thuong[i];
                 vitri=i;}
                 }           
                      
          return vitri;                //tra ve vi tri dong chua pivot
    }
    int Xd_dong_p_min(Phanso  matran[10][10],Phanso c_t[10],int d,int c)
    {
         Phanso thuong[10],x[10],b[10],min;
         int vitri,k=0;
         vitri= Xd_cot_p_min(c_t,c-1);
        
         Tach_matran(matran,x,d,vitri); 
         Tach_matran(matran,b,d,c-1);
         for(int j=0;j<d;j++)
         {
                 thuong[j]=b[j]/x[j];
         }     
         for(int i=0;i<d;i++)
         {
           if(thuong[i].gtthuc()!=(float)10000 && thuong[i].gtthuc()>=0 )
           {
                 min=thuong[i];
                 vitri=i;
                 break;
           }
         }                   
        for(int i=vitri+1;i<d;i++)
         {
            if(thuong[i].gtthuc()>=0&& thuong[i].gtthuc()<min.gtthuc())
                {
                                       min=thuong[i];
                                       vitri=i;
                }
         }                  
         return vitri;         
    }
    //--------------------------------------------------------------------------------
    // chia dong chua pivot cho pivot
    void Chia_cot(Phanso matran[10][10],int d,int c,int dp,int cp){ /////////////////
          Phanso x;
          x=matran[dp][cp];                       //x la pivot
          for(int i=0;i<c;i++)                    // dp la vi tri cua dong cua pivot
                                                  //cp la vi tri cua cot chua pivot
          {                   
              matran[dp][i]=matran[dp][i]/x;
              }
    }
    
    void Khu_cot(Phanso matran[10][10],int d,int c,int dp,int cp){
         Phanso k,v(-1);
         for(int i=0;i<d;i++){
           if(i!=dp){
              k=(matran[i][cp]/matran[dp][cp])*v;
              for(int j=0;j<c;j++){
                  matran[i][j]=matran[dp][j]*k + matran[i][j];}
                  }
           }              
    }
    
    int Toi_uu(Phanso c_t[10],int ptu,int x)
    {
          int kq=0;                            // dau hieu toi uu khi kq=0
          if(x==1){                            //1 cho bai toan tim max
               for(int j=0;j<ptu;j++)
                  if(c_t[j].gtthuc()>(float)0)  kq++;
                  }
          else{                                //0 cho bai toan tim min
              for(int j=0;j<ptu;j++)
                  if(c_t[j].gtthuc()<(float)0)  kq++;
                  } 
              return kq;
    } 
    int kt_suybien(Phanso x_b[10],int d)        //ham kiem tra xem co suy bien khong
    {
           for (int i=0;i<d;i++)                
           if(x_b[i].gtthuc()<=0)                            
           return 100;
    }    
    // tim gt z(x) thi tinh ham nhan 2 mang   
    void huongdan()
    {
         
         cout<<"\n\nHuong dan su dung demo\n\n";
         cout<<"\t\tDouble_click vao file nienluan1.exe\n\n";
         cout<<"\tChon 1 De giai bai toan quy hoach tuyen tinh\n\n";
         cout<<"\t\tNhap vao so dong (vd nhap 2)\n\n";
         cout<<"\t\tNhap vao so cot (vd nhap 5)\n\n";
         cout<<"\t\t\tNhap vao ma tran m dong n cot (2 dong 5 cot)\n\n";
         cout<<"\t\t\tvi du nhap ma tran sau\n\n";
         cout<<"\t\t\t\t 2\t3\t1\t0\t7\n\n";
         cout<<"\t\t\t\t 1\t-1\t0\t1\t1\n";
         cout<<"\t\tNhap ham muc tieu\n\n";
         cout<<"\t\t\tVi du nhap nhu sau: 1\t2\t0\t0\n\n";
         cout<<"\t\tBAN SE NHAN DUOC KET QUA LA 14/3\n\n";
         cout<<"\tChon 2 De thoat\n\n";
         cout<<"\tChon 3 De xem huong dan chi tiet chay demo\n";
    }                                                                           
              //---------------------------------giao dien va khai bao-----------------------
              //----------------------------------------------------------------------------
              
      void menu()        
     {         cout<<"\n\n\n--------------------------------NIEN LUAN 1-------------------------------------\n";
              time_t rawtime;
              time(&rawtime);
              cout<<"\t\t\tHom nay:"<<ctime(&rawtime);
              cout<<"--------------------------------------------------------------------------------\n";
              cout<<"SV: TRUONG THIEN THANH\t\t\tGVHD: NGUYEN THANH QUI";
              cout<<"\nMSSV: 1071555\t\t\t\tMSCB:1945";
              cout<<"\n\n\n\t----------CHUONG TRINH GIAI QUY HOACH TUYEN TINH----------\n";
              cout<<"\n\t------------------BANG PP DON HINH CAI TIEN---------------\n";
              cout<<"\n\t---------------------VOI HE SO LA PHAN SO-----------------\n";        
              cout<<"\n-------------------------------------------------------------------------------\n";
              cout<<"\n\tMoi ban chon phim chuc nang sau\n";
              cout<<"\t\t1. Giai quy hoach tuyen tinh\n";
              cout<<"\n\t\t2. Thoat\n";   
              cout<<"\n\t\t Ban chon:";}
    main()
    {
          int t;int k=1;
          menu();
            do
         {    ;do{t=Nhap();system("cls");
         if(t<1||t>3) menu();
              }while(t<1||t>3);
              //cin>>t;
              
              Phanso matran[10][10],a[10][10],x_b[10],c_b[10],i_b[10],c_T[10],c_t[10];
              Phanso x,vitri[10];  // d la so dong  /d_p la dong pivot
              int d,c,c_p,d_p,n; // c la so cot  /c_p la cot pivot
              //----------------------------------------------------------------------------
              //----------------------------------------------------------------------------
         
         switch(t){
               case 1 :
               {     
                     ////-----------------------------Nhap ma tran--------------------------------
                     cout<<"\n Nhap vao 1 quy hoach tuyen tinh(Dang chinh tac): ";
                     cout<<"\n\n\t * Nhap ma tran:";
                     //cout<<"\n\n\t   So dong : ";d=Nhap();     
                     cout<<"\n\n\tNhap so dong 2<d<10 \n\tNhap so cot d<c<10";          
                     do {                   
                         cout<<"\n\n\t   So dong : ";
                         d=Nhap();
                     } while (d<2||d>9);
                                            // vi so dong < so cot
                                            // nen dong khong the = 10              
                     do {
                         do{
                         cout<<"\n\n\t   So cot : ";
                         c=Nhap();
                         } while(c>10);
                     } while (c<=d);                 
                     Nhap_matran(matran,d,c);    
                     cout<<"\n";
                     //------------------------- ----end nhap--------------------------------------                 
                     //--------------Kiem tra suy bien---------------------------------------------
                     
                     Tach_matran(matran,x_b,d,c-1);
                     int sb;sb=kt_suybien(x_b,d);
                     if(sb==100)  //100 la tri tra ve cua ham kt_suybien
                     {
                                cout<<"\n\tBai toan dang suy bien\n \n\tBai toan nay duoc giai bang phuong phap cai bien\n"; 
                                cout<<"\n\tChuong trinh chi giai bai toan bang phuong phap don hinh cai tien\n";
                                cout<<"\n\tXin cam on da su dung chuong trinh:";
                                break;
                     }
                     //--------------end kt_suybien------------------------------------------------
                     
                     
                     //---------------------------nhap ham muc tieu---------------------------------
                     cout<<"\n\n\t * Nhap ham muc tieu: ";
                     Nhap_mang(c_T,c-1);
                     //---------------------------end nhap muc tieu--------------------------------
               
               
                     //-------------lua chon giai-------------------------------------------------
                    
                      int max;
                     do{
                              cout<<"\nBan tim Max (1) / Min(0)\n\tBan chon:";
                             
                              cin>>max;
                              
                              }
                     while(max>1||max<0);           
                     //--------------end------------------------------------------------------------
                     
                     system("cls");
                     do{ //Giai quy hoach tuyen  tinh
                    
                                cout<<"\n---------------------------------Lan lap thu:"<<k<<"----------------------------------\n";                                         
                                cout<<"\nDang bang don hinh:\n\n";
                   
                                In_matran(matran,d,c);                        //in ma tran co so
                            
                                cout<<"C_T :";                                // In ra C_T 
                                In_mang(c_T,c-1); cout<<"\t Z(x)";
                                
                                                               
                                Tach_matran(matran,x_b,d,c-1);     
                                Xdinh_vt_matrandv(matran, d,c,vitri);
                                //xac dinh vi tri ma tran 
                                Xd_i_b(matran,vitri,i_b,d,c);                 //tinh i_b
    
                                Xdc_b(matran,c_T, d,c, c_b,vitri);            //tinh c_b
                               
                                x=Nhan_mang(c_b,x_b,d);                       // tinh gt ham muc tieu Z(x)
            
                                Tinh_c_t(matran,c_b,c_T,c_t,d, c);            //tinh c_T
                                
                                cout<<"\n\nc_t :";                            // In c_t 
                                In_mang(c_t,c-1);  //
                                
                                cout<<"\t=";                                  //In gt hmt
                                cout<<x<<"\n";
                                  
                                cout<<"\nC_b:";                               //In c_b
                                In_mang(c_b,d);
                                
                                cout<<"\n\nI_b:";                             //In i_b
                                In_mang(i_b,d);
                   
                                n=Toi_uu(c_t,c-1,max);                        //kt co toi uu hay chua 
                                
                                if(n==0){                                     //n=0 la toi uu                                    
                                //----------------------------da tim ra loi giai----------------------------
                                            cout<<"\n";
                                            cout<<"\n Da tim duoc Phuong an toi uu:";
                                            cout<<" * x"<<k<<" la phuong an toi uu *";
                                            cout<<"\n\n\t ==> Gia tri ham muc tieu toi uu la :z(x)="<<x;
                                            cout<<"\n\n\n\n\t-->Chon phim Enter de tro ve menu chinh";
                                //----------------------------end -----------------------------------------
                                            }
                                else{
                                                                            
                                     if(max==1){ 
                                                  d_p=Xd_dong_p(matran,c_t,d,c );             
                                                  c_p=Xd_cot_p(c_t,c-1);}  //HET IF
                                     else {
                                                  d_p=Xd_dong_p_min(matran,c_t,d,c );             
                                                  c_p=Xd_cot_p_min(c_t,c-1);
                                           } //HET IF
                                
                                //In ra pivot                           
                                cout<<"\n\nPivot la a"<<"["<<d_p<<"]"<<"["<<c_p<<"]"<<" = "<<matran[d_p][c_p];
                 
                                
                                 //----------------------------chia dong chua pivot cho pivot---------------
                                Chia_cot(matran, d,c,d_p, c_p);
                                cout<<"\n\nMa tran sau khi chia dong chua pivot cho pivot : \n";
                                In_matran(matran,d,c);
                                 //----------------------------end -----------------------------------------
                    
                                cout<<"C_T :";              // IN C_T
                                In_mang(c_T,c-1); 
                                cout<<"\t Z(x)";
          
                                cout<<"\n\nc_t :";          // In c_t
                                In_mang(c_t,c-1);
                                cout<<"\t  ="<<x<<"\n";
                                
                              
                                 //------------khu cot chua pivot-------------------------------------------
                                Khu_cot(matran,d,c,d_p,c_p);
                                Tach_matran(matran,x_b,d,c-1);
                                cout<<"\n\nMa tran sau khi khu cot chua pivot : \n";
                                In_matran(matran,d,c);
                                 //------------end---------------- -----------------------------------------
              
                                cout<<"C_T :";                // In ra C_T
                                In_mang(c_T,c-1); 
                                cout<<"\t Z(x)";
          
                                cout<<"\n\nc_t :";          // In  c_t
                                In_mang(c_t,c-1);
                                cout<<"\t  ="<<x<<"\n";
                    
                                }//HET IF
                 
                                k++;  
                   }while(n!=0&&k<=20);  // khi chua tim duoc toi uu chi cho chay 20 lan lap
            break;   //het do
                          
           }//het case 1         
         case 2 :exit(0);break; 
         
         case 3: menu();    
         }  //het switch     
         }while(t!=2);//het do     
       getch();  
    }
    có code co j chua hiểu thì liên hê với mình nghe. mail miengnho55@it2love.com
    nhiệt tình lém
    Đã được chỉnh sửa lần cuối bởi miengnho55 : 04-05-2009 lúc 11:14 PM.

  3. #3
    Ngày gia nhập
    11 2010
    Bài viết
    1

    các bác có biết tại sao em copy đoạn code này nhưng không chạy được không..em dùng c-free..ai có file .cpp của bài này gửi cho em với (file .cpp chậy được nha)
    email: linh.mavan@gmail.com
    cám ơn các bác nhiều nha

Các đề tài tương tự

  1. Giải bài toán cái ba-lô bằng kỹ thuật quy hoạch động
    Gửi bởi wild_horse trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 06-06-2015, 05:05 PM
  2. Bài tập C Giải bài toán Quy hoạch tuyến tính
    Gửi bởi waitforlove1191 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 25-10-2012, 08:04 PM
  3. Chương trình chấm thi cho các kì thi giải thuật là chương trình gì? Hoạt động thế nào?
    Gửi bởi coolkg1412 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 11-10-2011, 10:17 PM
  4. Code kiểm tra lược đồ quan hệ có nguy cơ xảy ra mâu thuẫn tuyến tuyến tính và phi tuyến
    Gửi bởi computerline trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 13-05-2011, 03:56 PM
  5. [bài tập giải thuật] Quy Hoạch Động !
    Gửi bởi rox_rook trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 17-12-2009, 08:24 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn