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

Đề tài: Lập trình cấu trúc sang hướng đối tượng ?

  1. #1
    Ngày gia nhập
    03 2009
    Nơi ở
    HN
    Bài viết
    56

    Mặc định Lập trình cấu trúc sang hướng đối tượng ?

    Giúp em chuyển các hàm sau sang một chương trình hướng đối tượng có chứa một lớp Array với, kỳ này em học OOP nhưng ông thầy không dạy chỉ giao bài tập làm thui, còn đâu là tự học, em đọc sách được khoảng 2 ngày rùi. kiến thức vẫn còn mông lung lắm,đọc sách thì toàn lý thuyết thôi ạ,

    Code:
    float* dulieu=Null;
    int spt=0;
    
    void khoitao_memory(int n)
    {
    spt=n;
    if(dulieu)
    delete []dulieu;
    dulieu=new float[spt];
    }
    
    float& phantu (int chiso)
    {
    return dulieu[chiso];
    }
    
    float tong()
    {
    float sum=0;
    for (int i=0; i<spt; i++)
    sum+=dulieu[i];
    return sum;
    }
    
    void giaiphong_memory()
    {
    if(dulieu)
    delete []dulieu;
    dulieu=NULL;
    }
    Em chuyển như này được không ạ, các anh xem có chỗ nào sai sửa giùm em với, cám ơn các anh trước nha
    class Array
    {
    public:
    Array() //Constructor
    {
    float* dulieu=NULL;
    int spt=0;
    }

    Array(int n) //Constructor
    {
    spt=n;
    if(dulieu)
    delete[]dulieu;
    dulieu = new fload[spt];
    }

    foat& phantu(int);

    fload tong();

    ~Array(void) //deConstructor
    {
    if (dulieu)
    delete []dulieu;
    dulieu=NULL;
    }
    };


    float& Array::phantu(int chiso)
    {
    return dulieu[chiso];
    }


    float Array::tong()
    {
    fload sum =0;
    for (int i=0; i<spt; i++)
    sum++ = dulieu[i];
    return sum;
    }
    Chú ý đặt tiêu đề rõ ràng hơn !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 09-03-2009 lúc 02:07 PM.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Bạn chuyển chưa ổn lắm,trong class Array của bạn đã có thuộc tính dữ liệu đâu,cái float* dulieu ở hàm khởi tạo dầu tiên chỉ là biến cục bộ, nó không phải là thành phần của class nên ko thể dùng ở hàm khởi tạo sau được.Bạn thử xem code này xem nhé, mình phải đi học nên ko sửa lại theo ý bạn ngay được
    C++ Code:
    1.  
    2. #include <iostream>
    3. #include <iomanip>
    4. using namespace std;
    5.  
    6. class Matrix
    7. {
    8. private:
    9.     int *data;
    10.     int colums;//so cot
    11.     int rows;//so hang
    12. public:
    13.     Matrix(const int r,const int c)
    14.     {
    15.         rows=r;
    16.         colums=c;
    17.         data=new int[rows*colums];
    18.     }
    19.     Matrix(const Matrix& m)//ham tao sao chep
    20.     {
    21.         rows=m.rows;
    22.         colums=m.colums;
    23.         data=new int[rows*colums];
    24.         for(int i=0;i<rows*colums;i++)
    25.             data[i]=m.data[i];
    26.     }
    27.     ~Matrix()//ham huy
    28.     {
    29.         if(data!=NULL)
    30.         {
    31.             delete[] data;
    32.             data=NULL;
    33.         }
    34.     }
    35.     void SetMatrix(int i,int j,const int x)//nhap cac phan tu cho mang
    36.     {
    37.         data[i*colums+j]=x;
    38.     }
    39.     int GetMatrix(int i,int j)//lay ra 1 phan tu cua ma tran
    40.     {
    41.         return data[i*colums+j];
    42.     }
    43.     //thay doi kich thuoc ma tran
    44.     void resize(int r,int c)
    45.     {
    46.         delete[] data;
    47.         rows=r;
    48.         colums=c;
    49.         data=new int[r*c];
    50.     }
    51.     //toan tu gan 2 ma tran
    52.     Matrix &operator=(Matrix& m)
    53.     {
    54.         int r=m.rows;
    55.         int c=m.colums;
    56.         resize(r,c);
    57.         for(int i=0;i<r*c;i++)
    58.             data[i]=m.data[i];
    59.         return *this;
    60.     }
    61.     //nap chong toan tu cong 2 ma tran
    62.     friend Matrix operator+(const Matrix& m1,const Matrix& m2)
    63.     {
    64.         if (m1.rows!=m2.rows || m1.colums!=m2.colums)
    65.         {
    66.             cout<<"\nKhong the cong 2 ma tran";
    67.             cin.ignore(1);
    68.             exit(1);
    69.         }
    70.         else
    71.         {
    72.             int r=m1.rows;
    73.             int c=m1.colums;
    74.             Matrix m(r,c);
    75.             for(int i=0;i<r*c;i++)
    76.                 m.data[i]=m1.data[i]+m2.data[i];
    77.             return m;
    78.         }
    79.     }
    80.     friend Matrix operator*(const Matrix& m1,const Matrix& m2)
    81.     {
    82.         if (m1.rows!=m2.rows || m1.colums!=m2.colums)
    83.         {
    84.             cout<<"\nKhong the cong 2 ma tran";
    85.             cin.ignore(1);
    86.             exit(1);
    87.         }
    88.         else
    89.         {
    90.             int r=m1.rows;
    91.             int c1=m1.colums;
    92.             int c2=m2.colums;
    93.             Matrix m(r,c2);
    94.             for (int i=0;i<r;i++)
    95.                 for(int j=0;j<c2;j++)
    96.                 {
    97.                     m.data[i*c2+j]=0;
    98.                     for(int k=0;k<c1;k++)
    99.                         m.data[i*c2+j]+=m1.data[i*c1+k]*m2.data[k*c2+j];;
    100.                 }
    101.             return m;
    102.         }
    103.     }
    104.     friend ostream& operator<<(ostream& out,const Matrix& mt)
    105.     {
    106.         for (int i=0;i<mt.rows;i++)
    107.         {
    108.             out<<"\n\n";
    109.             for(int j=0;j<mt.rows;j++)
    110.                 out<<setw(4)<<mt.data[i*mt.colums+j];
    111.         }
    112.         out<<endl;
    113.         return out;
    114.     }
    115. };
    116.  
    117. int main()
    118. {
    119.     Matrix a(3,3),b(3,3);
    120.     Matrix d(5,5),c(1,1);
    121.     //Thiet lap gia tri cho ma tran a
    122.     int i,j;
    123.     for (i=0; i<3; i++)
    124.         for (j=0; j<3; j++)
    125.             a.SetMatrix(i,j,i*3+j);
    126.     cout<<"Ma tran a="<<a;
    127.     //thiet lap b
    128.     for (i=0; i<3; i++)
    129.         for (j=0; j<4; j++)
    130.             b.SetMatrix(i,j,i+j*3);
    131.     cout<<"Ma tran b="<<b;
    132.     //tinh toan;
    133.     c = a + b;
    134.     cout << "\nc = a * b = " << endl << c;
    135.     d = c + b;
    136.     cout << "\nd= c + b = " << endl << d;
    137.     return 0;
    138. }
    Cánh Chym ứ mỏi

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

  1. Trả lời: 0
    Bài viết cuối: 07-07-2013, 07:29 PM
  2. Bài tập về cấu trúc trong c | Cấu trúc sinh viên???
    Gửi bởi dddzzzjjjiii trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 14
    Bài viết cuối: 21-07-2012, 05:06 PM
  3. Cấu trúc rẽ nhánh if chuyển sang switch
    Gửi bởi maiyeuriengem123 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 13-02-2012, 08:37 PM
  4. cấu trúc bảng băm là cấu trúc như thế nào?
    Gửi bởi minh_quang1202 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: 06-01-2011, 07:03 PM
  5. chuyển xâu theo cấu trúc "ho...dem..ten" sang "ten...ho..dem"
    Gửi bởi hoangminh1190 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 15-01-2009, 07:16 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