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

Đề tài: void menu() ?

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

    Wink void menu() ?

    VD:
    Em làm 1 bài với :nhập,hiện,cộng,nhân 2 ma trận.
    case '1': nhập
    case '2': hiện
    case '3': cộng
    case '4: nhân

    Khi em ấn 1 thì nhập 2 MT, ấn 2 thì hiện 2 MT đã nhập.
    Nếu em ấn 3 thì thực hiện cộng 2 MT.
    Em muốn hỏi ở đây là làm thế nào có thể biết được phím 3 đã được nhấn (Nghĩa là khi ấn 2 một lần nữa thì nó hiện ra thêm MT cộng nữa, hay nói cách khác là hiện ra thêm các kết quả của các phép tính mình đã chọn với 2 MT trên)

    Đây là bài em:
    PHP Code:
    #include<conio.h>
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    #include<stdlib.h>
    class MT
    {
        private:
            
    int hang,cot;
            
    double a[20][20];
        public:
            
    friend ostream &operator<<(ostream &os,const MT &x);
            
    friend istream &operator>>(istream &is,MT &x);
            
    MT operator+(const MTx2);
            
    MT operator-(const MTx2);
            
    MT operator*(const MTx2);
            
    MT operator!();
            
    void tim();
            
    void dt();
    };
    MT MT::operator+(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep cong ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]+x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator-(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep tru ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]-x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator*(const MT &x2)
    {
        if(
    this->cot!=x2.hang)
        {
            
    cout<<"\n Khong thuc hien duoc phep nhan ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=x2.cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              {
                
    x.a[i][j]=0;
                for(
    int k=0;k<x2.hang;k++)
                 
    x.a[i][j]+=this->a[i][k]*x2.a[k][j];
              }
            return 
    x;
        }
    }
    MT MT::operator!()
    {
        if(
    this->hang==this->cot)
        {
            
    MT x;
            
    int i,j,k,r,n;
            
    double tg;
            
    n=x.hang=this->hang;
            
    n=x.cot=this->cot;
            for(
    i=0;i<n;i++)
             for(
    j=0;j<n;j++)
              if(
    i==jx.a[i][j]=1;
              else 
    x.a[i][j]=0;
            for(
    k=0;k<n;k++)
            {
                
    r=k;
                for(
    i=k+1;i<n;i++)
                    if(
    abs(this->a[i][k])>abs(this->a[r][k])) r=i;
                if(
    abs(this->a[r][k])<1.0E-8)
                {
                    
    cout<<"\n  Ma tran suy bien,khong co nghich dao";
                    
    getch();
                    return *
    this;
                }
                for(
    j=0;j<n;j++)
                {
                    
    tg=this->a[k][j];
                    
    this->a[k][j]=this->a[r][j];
                    
    this->a[r][j]=tg;
                    
    tg=x.a[k][j];
                    
    x.a[k][j]=x.a[r][j];
                    
    x.a[r][j]=tg;
                }
                
    tg=this->a[k][k];
                for(
    j=0;j<n;j++)
                {
                    
    this->a[k][j]/=tg;
                    
    x.a[k][j]/=tg;
                }
                for(
    int i=0;i<n;i++)
                if(
    i!=k)
                {
                    
    tg=this->a[i][k];
                    for(
    j=0;j<n;j++)
                    {
                        
    this->a[i][j]-=tg*this->a[k][j];
                        
    x.a[i][j]-=tg*x.a[k][j];
                    }
                }
            }
            return 
    x;
        }
        else
        {
            
    cout<<"\nKhong thuc hien duoc\n";
            return *
    this;
        }
    }
    void MT::tim()
    {
        if(
    this->hang==this->cot)
        
    cout<<*this;

    }
    void MT::dt()
    {

        
    int m,i,j,k,heso1=1,heso2=1,l,tg,c,u,v,heso,s,n;
        
    double dt;
        if(
    this->hang==this->cot)
        {
         
    m=this->hang;n=this->cot;
         if(
    n==1cout<<a[0][0];
         if(
    n==2cout<<a[0][0]*a[1][1]-a[1][0]*a[0][1];
         if(
    n>2){ m=n+1;
              for(
    j=0;j<n-1;j++)
              { 
    m--;
                for(
    i=0;i<m;)
                { if(
    a[i][j]==0i++;
                  else{ 
    k=i;i++;
                    if(
    a[i][j]!=0&&i<m){ if(int(a[k][j])%int(a[i][j])==0){ l=-a[k][j]/a[i][j];
                                               for(
    c=0;c<n;c++)
                                               { 
    a[i][c]=l*a[i][c]+a[k][c];
                                                 
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                                 
    a[k][c]=-a[k][c];
                                               }
                                               
    heso1=l*heso1;
                                             }
                             else{ 
    u=a[k][j];
                                   
    v=a[i][j];
                                   for(
    c=0;c<n;c++)
                                   { 
    a[i][c]=-u*a[i][c]+v*a[k][c];
                                 
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                 
    a[k][c]=-a[k][c];
                                   }
                                   
    heso2=heso2*(-u);
                                 }
                               }
                    else{ if(
    i==m-1){ for(c=0;c<n;c++)
                              { 
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                            
    a[k][c]=-a[k][c];
                              }
                            }
                    }
                  }
                }
              }
              
    cout<<"\n Ma tran tam giac tren:";
              for(
    i=0;i<n;i++)
              { 
    cout<<"\n";
                for(
    j=0;j<n;j++)
                
    cout<<setw(6)<<a[i][j];
              }
              
    cout<<"\n";
              
    heso=1;
              for(
    i=0;i<n;i++)
               for(
    j=0;j<n;j++)
               { 
    heso=heso1*heso2;}
              
    s=1;
              
    cout<<"\n Dinh thuc:";
              for(
    j=0,i=n-1;i>=0;i--,j++)
              { 
    s=s*a[i][j];}
                
    dt=s/heso;
                
    cout<<dt;
              }
        }
    }

    istream &operator>>(istream &is,MT &x)
    {
        
    cout<<"\n Nhap so hang va so cot cua ma tran:";
        
    is>>x.hang>>x.cot;
        
    randomize();
        for(
    int i=0;i<x.hang;i++)
         for(
    int j=0;j<x.cot;j++)
          {
    x.a[i][j]=random(5);
           
    cout<<"\n";
           
    cout<<"a["<<i+1<<"]"<<"["<<j+1<<"]:"<<x.a[i][j];
          }
        return 
    is;
    }
    ostream &operator<<(ostream &os,const MT &x)
    {
        
    os<<setprecision(2)<<setiosflags(ios::showpoint);
        for(
    int i=0;i<x.hang;i++)
        {
            
    os<<"\n";
            for(
    int j=0;j<x.cot;j++)
            
    os<<setw(6)<<x.a[i][j];
        }
        
    os<<"\n";
        return 
    os;
    }
    void Menu()
    {
        
    clrscr();
        
    cout<<"\n Lua chon cong viec theo so \n";
        
    cout<<"\n 1.Nhap ma tran";
        
    cout<<"\n 2.Hien ma tran";
        
    cout<<"\n 3.Cong 2 ma tran";
        
    cout<<"\n 4.Hieu 2 ma tran";
        
    cout<<"\n 5.Tich 2 ma tran";
        
    cout<<"\n 6.Chia 2 ma tran";
        
    cout<<"\n 7.Tim ma tran vuong";
        
    cout<<"\n 8.Tim dinh thuc";
        
    cout<<"\n 9.Tim ma tran nghich dao";
        
    cout<<"\n 0.Thoat \n";
    }
    void main()
    {
        
    MT d,e,s;
        while(
    1)
        {
            
    Menu();
            
    int k=getch();
            
    clrscr();
            switch(
    k)
            {
             case 
    '1':
                
    cout<<"\nMa tran 1\n";
                
    cin>>d;
                
    cout<<"\nMa tran 2\n";
                
    cin>>e;
                break;
             case 
    '2':
                
    cout<<d<<e;
                
                break;
             case 
    '3':
                
    cout<<"Tong 2 ma tran ban vua nhap la:\n";
                
                
    cout<<d+e;
                break;
             case 
    '4':
                
    cout<<"Hieu 2 ma tran ban vua nhap la:\n";
                
    cout<<d-e;
                break;
             case 
    '5':
                
    cout<<"Tich 2 ma tran ban vua nhap la:\n";
                
    cout<<d*e;
                break;
             case 
    '7':
                
    cout<<"Ma tran vuong:\n";
                
    d.tim();e.tim();
                break;
             case 
    '8':
                
    cout<<"\nDinh thuc ma tran 1\n";
                
    d.dt();
                
    cout<<"\nDinh thuc ma tran 2\n";
                
    e.dt();
                break;
             case 
    '9':
                
    cout<<"\n Ma tran nghich dao cua ma tran 1\n";
                
    cout<<!(d);
                
    cout<<"\n Ma tran nghich dao cua ma tran 2\n";
                
    cout<<!(e);
                break;
            }
            if(
    k=='0') break;
        
    getch();
        }

    Đã được chỉnh sửa lần cuối bởi ntd2012 : 17-12-2007 lúc 10:42 PM. Lý do: Bổ sung code

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Code hơi dài, lại không có chú thích, nói thật là của mình xem cũng ngại chứ đừng nói đến là xem hộ. Bạn chú ý điều này, tại sao gửi lên khắp các diễn đàn, ở đó đầy rẫy những người có khả năng giúp đỡ nhưng không ai giúp là vậy.

    Về yêu cầu của bạn Dr không rõ lắm, nhưng bạn có thể thêm một biến flag để nhận diện việc đã nhấn phím số 3 hay chưa? Nếu có khúc mắc vui lòng nêu cụ thể và chi tiết hơn nữa.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

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

    Cám ơn anh em sẽ sửa.
    VD:
    em làm cái void menu() với:
    case '1': nhập 2 MT
    case '2': hiện MT
    case '3': + MT

    VD minh họa:
    -Sau khi nhấn phím 1 để nhập MT .
    -Nhấn phím 2 lần đầu nó hiện ra 2 MT đã nhập.
    VD: 1 1
    1 1

    2 2
    2 2
    -Nhấn phím 3 mà hình hiện ra:
    3 3
    3 3
    -Nhấn phím 2 lần nữa mà hình hiện ra:
    1 1
    1 1

    2 2
    2 2
    Tổng:
    3 3
    3 3

    Em muốn hỏi là làm thế nào để khi nhấn phím 2 một lần nữa thì ngoài hiện 2 MT đã nhập , CT sẽ hiểu là phép cộng 2MT trên đã được thực hiện và sẽ hiện thêm KQ cộng 2 MT (hay CT hiểu là phím 3 đã được nhấn và sẽ hiện thêm KQ + 2MT)
    Đã được chỉnh sửa lần cuối bởi ntd2012 : 18-12-2007 lúc 09:39 AM.

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    47

    Ặc. Cái đó là do cách bạn code, bạn phải điều khiển máy để máy hiểu bạn chứ. Đấy đâu phải là lỗi sai gì chứ

    case '3':
    cout<<"Tong 2 ma tran ban vua nhap la:\n";

    cout<<d+e;
    break;
    Đây. Bạn viết cout << d+e, d và e bạn nhập từ bàn phím. Nó là cố định rồi cơ mà. Muốn làm như bạn thì làm thế này
    kq += (d+e);
    cout << kq;

    kq là 1 ma trận toàn số 0 nhé.

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

  1. Kỹ thuật C Sự khác nhau giữa khai báo void main(), int main(void) và int main(int argv, char *argc[])?
    Gửi bởi v_huster38 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2013, 12:10 PM
  2. Dựng 1 menu Asp.net bằng thẻ <ul> <li> hay Control [ Menu , SiteMap , Repeater , Treeview]
    Gửi bởi teodainhan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 8
    Bài viết cuối: 30-05-2013, 01:04 PM
  3. Mã nguồn C Lỗi initializing argument 5 of `int search(void*, int, int, int, void*, int (*)(void*, void*))'tìm kiếm nhị phân
    Gửi bởi dienkun trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 14-01-2012, 12:08 AM
  4. điểm khác nhau giữa hàm void abc(int a) và void abc (int &a ) là gì?
    Gửi bởi phuongnd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 06-04-2011, 10:51 AM
  5. Lỗi error LNK2005: "public: void __thiscall binary::nhap(void)"?
    Gửi bởi withlovei trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 23-02-2011, 09:13 PM

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