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

Đề tài: các phép toán trên Ma trận trong C++

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

    Mặc định các phép toán trên Ma trận trong C++

    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<iomanip.h>
    4. #include<fstream.h>
    5. #include<stdlib.h>
    6. #include<ctype.h>
    7. #include<stdio.h>
    8. //HIEN THUC CLASS MANG 2 CHIEU GHI DOC TU FILE
    9. int i,j;
    10. ///////////////////////////////////////////
    11. class matran
    12. /////////////////////////////////////////
    13. {
    14. private:
    15.     int tong1,tong2;
    16. public:
    17.     int n;
    18.     int **a;
    19.     matran(int s){
    20.         n = s;                  //s la cap cua ma tran do nguoi nhap muon nhan vao
    21.         a=new int *[n];
    22.         for(i=0;i<n;i++)
    23.             a[i]=new int [n];
    24.     }
    25.     matran(matran &s)
    26.     {          //ham dung copy, ham chi 1 doi so tra ve chinh no
    27.         n = s.n;
    28.         a=new int *[n];
    29.         for(i=0;i<n;i++)
    30.             a[i]=new int [n];
    31.         for (i = 0; i < n;i ++)
    32.             for (j = 0; j < n;j++)
    33.                 a[i][j] = s.a[i][j];
    34.         tong1 = s.tong1;
    35.         tong2 = s.tong2;
    36.  
    37.     }
    38.    ~matran()
    39.    {
    40.         for(i=0;i<n;i++) delete [] a[i];
    41.         delete [] a;
    42.    }
    43.  
    44.  
    45.     void nhap();
    46.     void xuat();
    47.     void tongCheo();
    48.     void soSoChan();
    49.     void tgDuoi(void);
    50.     void tgTren(void);
    51.     void ghiTep(char *ttep);
    52.     void docTep(char *ttep);
    53.     void maxMin(int &m,int &n);
    54.     void operator = (matran & a);           //ham gan
    55.  
    56.     matran tong(const matran &b);
    57.     matran hieu(const matran &b);
    58.     matran tich(const matran &b);
    59.     matran daoDau();
    60.     matran nhanK(int);   //ham nhan ma tran voi so nguyen k
    61. };
    62. //--------------------------------------------------------------------------//
    63. void matran::operator = (matran & x)
    64. {
    65.     n = x.n;
    66.     tong1 = x.tong1;
    67.     tong2 = x.tong2;
    68.     for (i = 0; i < n;i ++)
    69.         for (j = 0; j<n;j++)
    70.             a[i][j] = x.a[i][j];
    71. }
    72.  
    73.  
    74. //-------------------------------------------------------------------------//
    75. void matran::nhap()
    76. {
    77.     for(i=0;i<n;i++)
    78.         for(j=0;j<n;j++)
    79.         {
    80.             cout<<"nhap phan tu thu["<<i<<"]["<<j<<"]=";
    81.             cin>>a[i][j];
    82.         }
    83. }
    84.  
    85. //--------------------------------------------------------------------------//
    86. void matran::xuat()
    87. {
    88.     for(i=0;i<n;i++)
    89.         for(j=0;j<n;j++)
    90.         {
    91.             if(j==0) cout<<endl;
    92.             cout<<setw(6)<<a[i][j];
    93.         }
    94. }
    95. //--------------------------------------------------------------------------//
    96. void matran::maxMin(int &max,int &min)
    97. {
    98.     int l,k;
    99.     cout<<endl;
    100.     l=k=a[0][0];
    101.     for(i=0;i<n;i++)
    102.         for(j=0;j<n;j++)
    103.         {
    104.             if(k<=a[i][j])
    105.                 k=a[i][j]; 
    106.             if(l>a[i][j])
    107.                 l=a[i][j];
    108.         }
    109.     max=k;
    110.     min=l;
    111. }
    112. //--------------------------------------------------------------------------//
    113. void matran::tongCheo()
    114. {
    115.     tong1=0;
    116.     for(i=0;i<n;i++)
    117.         for(j=0;j<n;j++)
    118.             if(i==j) tong1=tong1+a[i][j];
    119.     cout<<"tong cua phan tu nam tren duong cheo chinh la:"<<tong1;
    120.     cout<<endl;
    121.     //TINH TONG DUONG CHEO PHU
    122.     tong2=0;
    123.     for(i=0;i<n;i++)
    124.         for(j=0;j<n;++j)
    125.         {
    126.             if(j==(n-(i+1)))
    127.             tong2=tong2+a[i][j];
    128.         }
    129.     cout<<"tong cua duong cheo phu la:"<<tong2<<endl;
    130. }
    131. //-------------------------------------------------------------------------//
    132. void matran::soSoChan()
    133. {
    134.     int t=0;//bien dem cac so chan
    135.     for(i=0;i<n;i++)
    136.         for(j=0;j<n;j++)
    137.             if (a[i][j]%2==0) ++t;
    138.     cout<< t;
    139. }
    140. //--------------------------------------------------------------------------//
    141. void matran::tgDuoi(void)
    142. {
    143.     //ma tran tam giac duoi cua ma tran  la
    144.    for(i=0;i<n;i++)
    145.         for(j=0;j<i+1;j++)
    146.         {
    147.             cout<<a[i][j]<<setw(6);
    148.             if(j==i)    cout<<endl;
    149.         }
    150. }
    151.    //ma tran tam giac tren cua a
    152. //----------------------------------------------------------------------------//
    153. void matran::tgTren()
    154. {
    155.     for(i=0;i<n;i++)
    156.     {
    157.         for(j=0;j<i;j++)
    158.             { if(j<i) cout<<"      "; }  //neu phan tu nao ma cot<hang thi ko xuat ra ,chi xuat khoang trang
    159.         for(j=i;j<n;j++)
    160.             {
    161.                 cout<<setw(6)<<a[i][j];
    162.                 if(j==n-1) cout<<endl;//toi phan tu cuoi cung cua cot se xuong hang
    163.             }
    164.      }
    165. }
    166. //-------------------------------------------------------------------------//
    167. //TINH TONG CUA 2 MA TRAN
    168. matran matran::tong(const matran &b)
    169. {
    170.     matran x(n);
    171.     for(i=0;i<n;i++)
    172.         for(j=0;j<n;j++)
    173.             x.a[i][j]=a[i][j]+b.a[i][j];
    174.     return x;
    175. }
    176. //--------------------------------------------------------------------------//
    177.  matran matran::hieu(const matran &b)
    178. {
    179.     matran x(n);
    180.     for(i=0;i<n;i++)
    181.         for(j=0;j<n;j++)
    182.             x.a[i][j]=a[i][j]-b.a[i][j];
    183.     return x;
    184.  
    185. }
    186. //------------------------------------------------------------------------//
    187. matran matran::tich(const matran &b)
    188. {
    189.     matran c(n);
    190.     int k;
    191.     for(i=0;i<n;i++)
    192.         for(j=0;j<n;j++)
    193.         {
    194.             c.a[i][j]=0;
    195.             for(k=0;k<n;k++)
    196.                 c.a[i][j]+= a[i][k]*b.a[k][j];
    197.         }
    198.     return c;
    199. }
    200. //------------------------------------------------------------------------//
    201. matran matran::daoDau( )
    202. {
    203.     matran y(n);
    204.     for(i=0;i<n;i++)
    205.         for(j=0;j<n;j++)
    206.         {
    207.             y.a[i][j] = a[i][j] * (-1);
    208.         }
    209.     return y;
    210. }
    211. //-------------------------------------------------------------------------//
    212. matran matran::nhanK(int k)
    213. {
    214.     matran x(n);
    215.     for(i=0;i<n;i++)
    216.         for(j=0;j<n;j++)
    217.             x.a[i][j]=k*a[i][j];
    218.     return x;
    219. }
    220. //--------------------------------------------------------------------------//
    221. void matran::ghiTep(char *ttep)
    222. {
    223.     ofstream f;
    224.     f.open(ttep,ios::app);
    225.     if(f.bad())exit(1);
    226.         f<<n<<setw(18)<<endl;
    227.     for(i=0;i<n;i++)
    228.         for(j=0;j<n;j++)
    229.         {
    230.            if(j==0) f<<endl;
    231.             f<<setw(6)<<a[i][j];
    232.         }
    233.     f<<endl;
    234.     f.close();
    235. }
    236. //-------------------------------------------------------------------------//
    237. void matran::docTep(char *ttep)
    238. {
    239.     ifstream f;
    240.     f.open(ttep,ios::in);
    241.     cout<<endl;
    242.     f>>n;
    243.     f.ignore();
    244.     for(i=0;i<n;i++)
    245.         for(j=0;j<n;j++)
    246.             f>>a[i][j];
    247.    f.close();
    248. }
    249. //chuong trinh chinh
    250. //***************************************************************/**/
    251. void main()
    252. {
    253.     matran a(3);
    254.     matran b(3);
    255.  
    256.     cout<<"nhap ma tran  A"<<endl;
    257.     a.nhap();
    258.  
    259.     cout<<"nhap ma tran B cung cap voi ma tran A:"<<endl;
    260.     b.nhap();
    261.  
    262.     cout<<"xuat ma tran A"<<endl;
    263.     a.xuat();
    264.     cout<<endl;
    265.  
    266.     cout<<"xuat ma tran B"<<endl;
    267.     b.xuat();
    268.     cout<<endl;
    269.  
    270.     cout<<"max min cua ma tran A la:";
    271.     int x, y;
    272.     a.maxMin(x, y);
    273.     cout<<x<<"   "<<y<<endl;
    274.  
    275.     cout<<"max min cua ma tran B la:";
    276.     b.maxMin(x, y);
    277.     cout<<x<<"   "<<y<<endl;
    278.  
    279.  
    280.     cout<<"so so chan cua ma tran a la:";
    281.     a.soSoChan();
    282.     cout<<endl;
    283.  
    284.     cout<<"so so chan cua ma tran bla:";
    285.     b.soSoChan();
    286.     cout<<endl;
    287.  
    288.  
    289.     cout<<"tong cheo cua ma tran A:";
    290.     a.tongCheo();
    291.     cout<<endl;
    292.  
    293.     cout<<"tong cheo cua ma tran B:";
    294.     b.tongCheo();
    295.     cout<<endl;
    296.  
    297.     matran c=a.tong(b);
    298.     cout<<"ma tran tong la:";
    299.     c.xuat();
    300.     cout<<endl;
    301.  
    302.  
    303.     matran d=a.tich(b);
    304.     cout<<"ma tran tich la:";
    305.     d.xuat();
    306.     cout<<endl;
    307.  
    308.  
    309.     matran e=a.hieu(b);
    310.     cout<<"ma tran hieu la:";
    311.     e.xuat();
    312.     cout<<endl;
    313.  
    314.     matran f=b.daoDau();
    315.     cout<<"ma tran dao dau cua b la:";
    316.     f.xuat();
    317.     cout<<endl;
    318.  
    319.     matran i=a.daoDau();
    320.     cout<<"ma tran dao dau la:";
    321.     i.xuat();
    322.     cout<<endl;
    323.  
    324.     cout<<"ma tran tam giac duoi cua A"<<endl;
    325.         a.tgDuoi();
    326.     cout<<endl;
    327.  
    328. //xuat ma tran tam giac tren cua A la:
    329.     cout<<"ma tran tam giac tren cua A:"<<endl;
    330.     a.tgTren();
    331.     cout<<endl;
    332.  
    333.  
    334.     cout<<" ma tran tam giac duoi cua B:"<<endl;
    335.     b.tgDuoi();
    336.     cout<<endl;
    337.  
    338.     cout<<"ma tran tam giac tren cua B:"<<endl;
    339.     b.tgTren();
    340.     cout<<endl;
    341.  
    342.  
    343.     cout<<endl;
    344.     matran h=b.nhanK(2);
    345.     cout<<"ma tran dc nhan voi so nguyen k  cua ma tran b la:"<<endl;
    346.     h.xuat();
    347.     cout<<endl;
    348.  
    349.     cout<<endl;
    350.     matran k=a.nhanK(2);
    351.     cout<<"ma tran dc nhan voi so nguyen k  cua ma tran a la:"<<endl;
    352.     k.xuat();
    353.     cout<<endl;
    354.  
    355. //------------------------------------------------------//
    356.     cout<<"cac ma tran duoc ghi va doc len file la:"<<endl;
    357.     cout<<"ma tran a:";
    358.     a.ghiTep("D:\matran.dl");
    359.     //a.docTep("D:\matran.dl");
    360.     a.xuat();
    361.     cout<<endl;
    362.  
    363.     cout<<"ma tran b:";
    364.     b.ghiTep("D:\matran.dl");
    365.     b.xuat();
    366.     cout<<endl;
    367.  
    368.     cout<<"ma tran tich";
    369.     d.ghiTep("D:\matran.dl");
    370.     d.xuat();
    371.     cout<<endl;
    372.  
    373.     cout<<"ma tran tong";
    374.     c.ghiTep("D:\matran.dl");
    375.     c.xuat();
    376.     cout<<endl;
    377.  
    378.  
    379.     cout<<"ma tran hieu:";
    380.     e.ghiTep("D:\matran.dl");
    381.     e.xuat();
    382.     cout<<endl;
    383.  
    384.     cout<<"ma tran dao cua b:";
    385.     f.ghiTep("D:\matran.dl");
    386.     f.xuat();
    387.     cout<<endl;
    388.  
    389.     cout<<"ma tran dao cua a:";
    390.     i.ghiTep("D:\matran.dl");
    391.     i.xuat();
    392.     cout<<endl;
    393.  
    394.     cout<<"ma tran dc nhan k  cua mt b:";
    395.     h.ghiTep("D:\matran.dl");
    396.     h.xuat();
    397.     cout<<endl;
    398.  
    399.     cout<<"ma tran dc nhan voi k cua mt a:";
    400.     k.ghiTep("D:\matran.dl");
    401.     k.xuat();
    402.     cout<<endl;
    403.     getch();
    404. }

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

    Cái class matran của bạn ko phải là OOP, cần sửa lại khá nhiều. Tốt nhất bạn nên làm trên mảng trước rồi mới làm trên file và danh sách liên kết sau.

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

    Hè chả biết OOP là gì hết. Bác sửa lại cho em đi theo cái kiểu OOP, chắc sửa xong là em biết OOP. Bài từ năm ngoái mà :(

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

    Trích dẫn Nguyên bản được gửi bởi soda_chanhmuoi Xem bài viết
    Hè chả biết OOP là gì hết. Bác sửa lại cho em đi theo cái kiểu OOP, chắc sửa xong là em biết OOP. Bài từ năm ngoái mà :(
    Mình cũng chả biết OOP là cái đinh gì hết. Nhìn code này thì hiểu dc mấy cái hàm, còn tụi "class, private, public," gì đó thì pó tay. Nếu lập một cái project thì e xin làm "function coder" (từ này mới đì-zai), còn giao cái developer cho mấy pác đó (đùa vui thôi nha)
    I know... nothing

  5. #5
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Chứng tỏ bạn này chưa học về lớp trong C++ rồi. Linh hồn của lập trình hướng đối tượng đó.
    In code we trust

  6. #6
    Ngày gia nhập
    05 2007
    Bài viết
    64

    Mặc định các phép toán trên Ma trận trong C++

    Uh, mình chỉ mới học C thôi, chưa biết tí gì về OPP, C++ cả. Mình chỉ biết con trỏ là linh hồn của C thôi, giờ biết thêm Lớp lầ linh hồn của OPP
    Học OPP như thế nào là hiệu quả nhất hả bạn ? Nên bắt đầu bằng C++ hay Java thì hay hơn ?
    I know... nothing

  7. #7
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi nguyen190887 Xem bài viết
    Uh, mình chỉ mới học C thôi, chưa biết tí gì về OPP, C++ cả. Mình chỉ biết con trỏ là linh hồn của C thôi, giờ biết thêm Lớp lầ linh hồn của OPP
    Học OPP như thế nào là hiệu quả nhất hả bạn ? Nên bắt đầu bằng C++ hay Java thì hay hơn ?
    OOP đâu có gì khó, tải mấy ebook học C++ về đọc sẽ hiểu, lớp đơn giản là struct mở rộng, và để tránh phải copy and paste lại code, ta lại chơi thêm thừa kế , các đối tượng là biến có kiểu giá trị là tên lớp. Khỏi cần phải nghĩ đi đâu xa

  8. #8
    Ngày gia nhập
    05 2007
    Bài viết
    64

    Mò mẫm code của mấy bài viết bằng C++ trong forum thì mình thấy hình như Lớp cũng gần giống struct, chỉ có điều là nó có thêm mấy cái phương thức (method) nữa. Đúng ko nerverland87 ???
    Còn nữa, nghe bạn nói "tránh phải copy và paste lại code" thì mình nghĩ là khi mình khai báo các lớp mới thì nó sẽ lưu vào một file nào đó để sau này mình có thể gọi lại phải không bạn ???

    Học thầy hổng tày học bạn. Help me nha
    I know... nothing

  9. #9
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Thừa kế trong lớp là thế này
    VD: ta có một lớp Động vật có vú có các thuộc tính của động vật có vú
    Sau đó ta xây dựng thêm lớp chó, và lớp chó cũng có thuộc tính chung của động vật có vú và những thuộc tính riêng của nó. Thì ta sử dụng thừa kế để lớp chó thừa kế lại các thuộc tính của đv có vú trong lớp chó.
    Bạn đọc thêm quyển tự học Lập trình hướng đối tượng trong 21 ngày hoặc quyển C++ lập trình hướng đối tượng (Của Phạm Văn Ất) thì sẽ rõ hơn
    In code we trust

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

  1. xử lý khoảng trắng thừa trong chuỗi trên C#?
    Gửi bởi pigpig.ipod trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 21-10-2011, 10:21 AM
  2. Cách định nghĩa toán tử +-* trên ma trận trong C++?
    Gửi bởi ManNon 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: 13-03-2011, 05:29 PM
  3. tim số hoàn hảo trên dòng trong một ma trận?
    Gửi bởi huongtan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 16-01-2011, 12:40 AM
  4. Phép toán trên ma trận trong lập trình hướng đối tượng
    Gửi bởi tieuyeu_ht91 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 21-10-2010, 11:02 PM
  5. Liệt kê và đếm số nguyên tố trong ma trận trên ngôn ngữ C
    Gửi bởi toend2008 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: 08-12-2009, 01:14 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