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

Đề tài: Đa năng hóa toán tử trên C++?

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

    Wink Đa năng hóa toán tử trên C++?

    minh viết chương trình + và - 2 ma trân và so sánh == và != cho 2 ma tran.mình đã đa năng hóa toán tử +.Giờ mình làm sao để đa năng hóa 2 toán tử còn lại,nếu mình lấy phép - ở trên để dùng đa năng hóa 2 toán tử còn lại ko.Ý mình là có thể lấy toán tử đã DNH để sử dụng cho việc đa năng hóa toán tử khác được ko

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

    Trích dẫn Nguyên bản được gửi bởi quangtruong Xem bài viết
    minh viết chương trình + và - 2 ma trân và so sánh == và != cho 2 ma tran.mình đã đa năng hóa toán tử +.Giờ mình làm sao để đa năng hóa 2 toán tử còn lại,nếu mình lấy phép - ở trên để dùng đa năng hóa 2 toán tử còn lại ko.Ý mình là có thể lấy toán tử đã DNH để sử dụng cho việc đa năng hóa toán tử khác được ko
    Ý bạn là giả sử bạn đã viết hàm +, giờ bạn muốn hàm - sử dụng lại hàm + ở trên chứ gì?
    Câu trả lời là được.

  3. #3
    Ngày gia nhập
    01 2009
    Bài viết
    165

    vô tư chỉ cần khác tham số truyền vào hàm hoặc khác giá trị trả về.

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

    up bài thử chơi:
    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<iomanip.h>
    4. #include<stdlib.h>
    5. //------------------------------------------------
    6. class Array
    7. {
    8. protected:
    9. int n;
    10. float *p;
    11.  
    12. public:
    13. Array();
    14. Array(int );
    15. Array(Array &);
    16. ~Array();
    17. Array operator+(Array &const );
    18. Array operator-(Array &const );
    19. friend istream& operator>>(istream&,Array & );
    20. friend ostream& operator<<(ostream&,Array & );
    21. };
    22. //----------------------------------------------------------
    23. class MT : public Array
    24. {
    25.  private :
    26.  int m;
    27.  public:
    28. MT();
    29. MT(int);
    30. MT(int,int);
    31. MT(MT&);
    32. ~MT();
    33. MT operator+(MT& const );
    34. MT operator-(MT& const );
    35. friend istream& operator>>(istream&,MT & );
    36. friend ostream& operator<<(ostream&,MT & );
    37. };
    38. //--------------------------------------------------------------
    39. istream& operator>>(istream &is,Array & B)
    40. {
    41.  cout<<"\nNhap so phan tu cua day :";is>>B.n;
    42.  B.p=new float[B.n];
    43.  cout<<"\nNhap gia tri cho cac phan tu cua day !";
    44.  for(int i=0;i<B.n;i++)
    45.  {
    46.  cout<<"\nPhan tu thu "<<i<<" :";cin>>B.p[i];
    47.  }
    48.  return is;
    49. }
    50. //-------------------------------------------------------
    51. ostream& operator<<(ostream& os,Array & B)
    52. {
    53. for(int i=0;i<B.n;i++) cout<<setw(4)<<B.p[i];
    54. return os;
    55. }
    56. //------------------------------------------------------
    57. Array::Array()
    58. {
    59. n=0;
    60. p=NULL;
    61. }
    62. //-----------------
    63. Array::Array(int m)
    64. {
    65. n=m;
    66. p=new float[n];
    67. }
    68. //------------------
    69. Array::Array(Array &array)
    70. {
    71. n=array.n;
    72. p=new float[n];
    73. for(int i=0;i<n;i++) p[i]=array.p[i];
    74. }
    75. //-----------------
    76. Array::~Array()
    77.  {
    78. // delete p;
    79.  }
    80. //---------------------------------------------------------
    81. Array Array::operator+(Array &const B)
    82. {
    83.   if(n!=B.n)
    84.   {
    85.   cout<<"\nHai day khac kich thuoc !"; getch(); return 0;
    86.   }
    87.   else
    88.   {
    89.    Array kq(n);
    90.    for(int i=0;i<n;i++)
    91.    kq.p[i]=p[i]+B.p[i];
    92.    return kq;
    93.   }
    94. }
    95. //------------------------------
    96. Array Array::operator-(Array &const B)
    97. {
    98.   if(n!=B.n)
    99.   {
    100.   cout<<"\nHai day khac kich thuoc !"; getch();return 0;
    101.   }
    102.   else
    103.   {
    104.    Array kq(n);
    105.    for(int i=0;i<n;i++)
    106.    kq.p[i]=p[i]-B.p[i];
    107.    return kq;
    108.   }
    109. }
    110. //---------------------------------------------------------------------------
    111. istream& operator>>(istream&is,MT & B)
    112. {
    113. cout<<"\nNhap so hang :";is>>B.m;
    114. cout<<"\nNhap so cot  :";is>>B.n;
    115. B.p=new float[B.m*B.n];
    116. cout<<"\nNhap cac phan tu cua ma tran !";
    117. for(int i=0;i<B.m;i++)
    118. for(int j=0;j<B.n;j++)
    119. {
    120. cout<<"\n["<<i<<"]["<<j<<"] = ";
    121. is>>B.p[i*B.n+j];
    122. }
    123. return is;
    124. }
    125. //------------------------------------------------
    126. ostream& operator<<(ostream& os,MT & B)
    127. {
    128.    for(int i=0;i<B.m;i++)
    129.    {
    130.    os<<"\n\n";
    131.    for(int j=0;j<B.n;j++)
    132.    os<<setw(4)<<B.p[i*B.n+j];
    133.    }
    134.    return os;
    135. }
    136. //-------------------------------------------------
    137. MT::MT()
    138. {
    139.  n=m=0;
    140.  p=NULL;
    141. }
    142.  
    143. MT::MT(int x)
    144. {
    145.  n=m=x;
    146.  p=NULL;
    147. }
    148. MT::MT(int x,int y)
    149. {
    150. m=x;n=y;
    151. p=new float[m*n];
    152. }
    153.  
    154. MT::MT(MT& x)
    155. {
    156.  m=x.m;n=x.n;
    157.  p=new float[m*n];
    158.  for(int i=0;i<m*n;i++) p[i]=x.p[i];
    159. }
    160.  
    161. MT MT::operator+(MT& const B)
    162. {
    163.  
    164.  if(m!=B.m||n!=B.n)
    165.  {
    166.  cout<<"\nHai ma tran khong cung kich co !";getch();return 0;
    167.  }
    168.  else
    169.  {
    170.  MT tg(m,n);
    171.  for(int i=0;i<m*n;i++)
    172.  tg.p[i]=p[i]+B.p[i];
    173.  return tg;
    174.  }
    175. }
    176.  
    177. MT MT::operator-(MT& const B)
    178. {
    179.  
    180.  if(m!=B.m||n!=B.n)
    181.  {
    182.  cout<<"\nHai ma tran khong cung kich co !";getch();return 0;
    183.  }
    184.  else
    185.  {
    186.  MT tg(m,n);
    187.  for(int i=0;i<m*n;i++)
    188.  tg.p[i]=p[i]-B.p[i];
    189.  return tg;
    190.  }
    191. }
    192.  
    193. MT::~MT()
    194. {
    195. //delete p;
    196. }
    197. //-----------------------------------------------------
    198. void RunA()
    199. {
    200.  Array A,B,C;
    201.   char c;
    202. do
    203.  {
    204.   clrscr();
    205.   cout<<"\n 1  .Nhap day !";
    206.   cout<<"\n 2  .Thuc hien phep cong !";
    207.   cout<<"\n 3  .Thuc hien phep tru !";
    208.   cout<<"\n 4  .Xem ket qua !";
    209.   cout<<"\nESC .Exit";
    210.   c=getch();
    211.   switch(c)
    212.   {
    213.   case'1':cout<<"\nNhap day A!";cin>>A;
    214.       cout<<"\nNhap day B!";cin>>B;break;
    215.  
    216.   case'2':C=A+B;cout<<"\n\tOK";getch();break;
    217.   case'3':C=A-B;cout<<"\n\tOK";getch();break;
    218.   case'4':cout<<"\nDay A :"<<A;
    219.       cout<<"\nDay B :"<<B;
    220.       cout<<"\nDay C :"<<C;getch();break;
    221.   case 27:return;
    222.   }
    223.  }while(1);
    224. }
    225. //------------------------------------------------------------------------
    226. void RunM()
    227. {
    228.  MT A,B,C;
    229.   char c;
    230. do
    231. {
    232.   cout<<"\n 1  .Nhap ma tran !";
    233.   cout<<"\n 2  .Thuc hien phep cong !";
    234.   cout<<"\n 3  .Thuc hien phep tru !";
    235.   cout<<"\n 4  .Xem ket qua !";
    236.   cout<<"\nESC .Exit";
    237.   c=getch();
    238.   switch(c)
    239.   {
    240.   case'1':cout<<"\nNhap ma tran A!";cin>>A;
    241.       cout<<"\nNhap ma tran B!";cin>>B;break;
    242.   case'2':C=A+B;cout<<"\n\tOK";getch();break;
    243.   case'3':C=A-B;cout<<"\n\tOK";getch();break;
    244.   case'4':cout<<"\nMa tran A : "<<A;
    245.       cout<<"\nMa tran B : "<<B;
    246.       cout<<"\nMa tran C : "<<C;getch();break;
    247.   case 27:return;
    248.   }
    249. }while(1);
    250.  
    251.  
    252.  
    253. }
    254.  
    255. void main()
    256. {
    257. clrscr();
    258. char c;
    259. do
    260. {
    261.   clrscr();
    262.   cout<<"\n 1  .Array";
    263.   cout<<"\n 2  .Matrix";
    264.   cout<<"\nESC .Exit";
    265.   c=getch();
    266.   switch(c)
    267.   {
    268.   case'1':RunA();break;
    269.   case'2':RunM();
    270.   }
    271. }while(c!=27);
    272. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 06-06-2009 lúc 11:06 AM.

  5. #5
    Ngày gia nhập
    12 2009
    Nơi ở
    Hải Phòng
    Bài viết
    8

    PHP Code:
    #include<iostream.h>
    #include<conio.h>
    #include<stdlib.h>
    typedef struct MT
    {
        
    int n,m;
        
    float *a;
    };

    void khoitao(MT &KQ)
    {
        
    KQ.a=new float[KQ.n*KQ.m];
    }
    istreamoperator >> (istreamis,MT &KQ)
    {
        
    int i,j;
        
    float x;
        
    cout<<"nhap so hang cho ma tran: "is>>KQ.n;
        
    cout<<"nhap so cot cho ma tran: "is>>KQ.m;
        
    khoitao(KQ);
        for(
    i=0;i<KQ.n;i++)
            for(
    j=0;j<KQ.m;j++)
            {
                
    wherex(); wherey();
                
    gotoxy(10,wherey() - 1);
                
    is>>*(KQ.i*KQ.+j);
            }
        return 
    is;
    }
    ostreamoperator << (ostreamos,MT KQ)
    {
        
    int i,j;
        for(
    i=0;i<KQ.n;i++)
        {
            
    endl;
            for(
    j=0;j<KQ.m;j++)
            {
                
    wherex(); wherey();
                
    gotoxy(10,wherey() - 1);
                
    os<<*(KQ.i*KQ.j)<<endl;
            }
        }
        return 
    os;
    }
    MT operator + (MT A,MT B)
    {
        
    int i,j;
        
    MT tg;
        
    tg.n=A.n;
        
    tg.m=A.m;
        
    khoitao(tg);
        for(
    i=0;i<tg.n;i++)
            for(
    j=0;j<tg.m;j++)
                *(
    tg.i*tg.+j) = *(A.i*tg.j) + *(B.i*tg.+j);
        return 
    tg;
    }
    MT operator - (MT A,MT B)
    {
        
    MT tg;
        
    int i,j;
        
    tg.n=A.n;
        
    tg.m=A.m;
        
    khoitao(tg);
        for(
    i=0;i<tg.n;i++)
            for(
    j=0;j<tg.m;j++)
                *(
    tg.i*tg.+j) = *(A.i*tg.j) - *(B.i*tg.+j);
        return 
    tg;
    }
    void menu()
    {
        
    MT A,B,TONG,HIEU;
        
    int x;
        while(
    1)
        {
            
    clrscr();
            
    cout<<"[1] Nhap ma tran"<<endl;
            
    cout<<"[2] Xem ma tran"<<endl;
            
    cout<<"[3] Cong 2 ma tran"<<endl;
            
    cout<<"[4] Tru 2 ma tran"<<endl;
            
    cout<<"[0] Thoat"<<endl;
            
    cout<<"Nhap lenh can thuc hien: "cin>>x;
            switch(
    x)
            {
                case 
    1cout<<"Nhap ma tran A: "<<endl;
                    
    cin>>A;
                    
    cout<<"Nhap ma tran B: "<<endl;
                    
    cin>>B;
                    break;
                case 
    2cout<<"Ma tran A: "<<endl;
                    
    cout<<A;
                    
    cout<<"Ma tran B: "<<endl;
                    
    cout<<B;
                    
    getch(); break;
                case 
    3: if(A.== B.&& A.== B.m)
                    {
                        
    cout<<"Thuc hien phep toan cong 2 ma tran"<<endl;
                        
    cout<<"Ket qua thuc hien: "<<endl;
                        
    TONG A+B;
                        
    cout<<TONG;
                        
    getch(); break;
                    }
                    else
                    {
                        
    cout<<"2 ma tran ko the cong"<<endl;
                        
    getch(); break;
                    }
                case 
    4: if(A.== B.&& A.== B.m)
                    {
                        
    cout<<"Thuc hien phep toan tru 2 ma tran"<<endl;
                        
    cout<<"Ket qua thuc hien: "<<endl;
                        
    HIEU A-B;
                        
    cout<<HIEU;
                        
    getch(); break;
                    }
                    else
                    {
                        
    cout<<"2 ma tran ko the tru"<<endl;
                        
    getch(); break;
                    }
                case 
    0: exit(1); break;
            }
        }
    }
    void main()
    {
        
    clrscr();
        
    menu();
        
    getch();


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

  1. Bản chất của toán tử >> << và khả năng đa năng hóa >> << C++ (toán tử xuất nhập)
    Gửi bởi langman trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 05-03-2016, 11:46 PM
  2. C++ Tutorial Bản chất của toán tử ++ -- và khả năng đa năng hóa ++ --
    Gửi bởi langman trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 25-09-2012, 01:11 PM
  3. C++ Tutorial Bản chất của toán tử coma và khả năng đa năng hóa coma C++ (toán tử dấu phẩy)
    Gửi bởi langman trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 23-03-2011, 05:36 AM
  4. Thắc mắc đa năng hóa toán tử ++ trên cấu trúc thời gian
    Gửi bởi cuonghip 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: 24-02-2011, 09:45 AM
  5. Đa năng hóa toán tử trên lớp String
    Gửi bởi ngthtg735252 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: 11-09-2010, 11:44 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