Lớp Sư phạm Cử nhân tin học khóa 1
Chào mừng bạn trở lại diễn đàn.

Tham khảo một ví dụ về vector

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Tham khảo một ví dụ về vector

Bài gửi by Admin on 19/7/2008, 10:02 pm

Bài viết dưới đây được trìch trong giáo trình "Lập trình hướng đối tượng với C++" của Khoa Công nghệ thông tin trường Đại học Bách khoa Hà nội Khoa Công nghệ thông tin viết lớp vector. Các bạn tham khảo ví dụ dưới đây xem co thể áp dụng vào bài thực hành của thầy. Bạn nào thực hiện được post lên nhé.


Sự cần thiết của các hàm thiết lập và huỷ bỏ - lớp vector trong không gian n chiều
Trên thực tế, với các lớp không có các thành phần dữ liệu động chỉ cần sử dụng hàm thiết lập và huỷ bỏ ngầm định là đủ. Hàm thiết lập và huỷ bỏ do người lập trình tạo ra rất cần thiết khi các lớp chứa các thành phần dữ liệu động. Khi tạo đối tượng hàm thiết lập đã xin cấp phát một khối bộ nhớ động, do đó hàm huỷ bỏ phải giải phóng vùng nhớ đã được cấp phát trước đó. Ví dụ sau đây minh hoạ vai trò của hàm huỷ bỏ trong trường hợp lớp có các thành phần cấp phát động.
Ví dụ:
Code:

/*vector.cpp*/
#include <iostream.h>
#include <conio.h>
class vector {
   int n;  //số chiều
   float *v;  //vùng nhớ toạ độ
  public:
   vector(); //Hàm thiết lập không tham số
   vector(int size); //Hàm thiết lập một tham số
   vector(int size, float *a);
   ~vector();//Hàm huỷ bỏ, luôn luôn không có tham số
   void display();
  };
vector::vector()  {
  int i;
  cout<<"Tao doi tuong tai "<<this<<endl;
  cout<<"So chieu :";cin>>n;
  v= new float [n];
  cout<<"Xin cap phat vung bo nho "<<n<<" so thuc tai"<<v<<endl;
  for(i=0;i<n;i++) {
    cout<<"Toa do thu "<<i+1<<" : ";
    cin>>v[i];
    }
  }
vector::vector(int size)  {
  int i;
  cout<<"Su dung ham thiet lap 1 tham so\n";
  cout<<"Tao doi tuong tai "<<this<<endl;
  n=size;
  cout<<"So chieu :"<<size<<endl;
  v= new float [n];
  cout<<"Xin cap phat vung bo nho "<<n<<" so thuc tai"<<v<<endl;
  for(i=0;i<n;i++) {
    cout<<"Toa do thu "<<i+1<<" : ";
    cin>>v[i];
    }
  }
vector::vector(int size,float *a )  {
  int i;
  cout<<"Su dung ham thiet lap 2 tham so\n";
  cout<<"Tao doi tuong tai "<<this<<endl;
  n=size;
  cout<<"So chieu :"<<n<<endl;
  v= new float [n];
  cout<<"Xin cap phat vung bo nho "<<n<<" so thuc tai"<<v<<endl;
  for(i=0;i<n;i++)
    v[i] = a[i];
  }
vector::~vector() {
  cout<<"Giai phong "<<v<<"cua doi tuong tai"<<this<<endl;
  delete v;
  }
//Hiển thị kết quả
void vector::display()  {
  int i;
  cout<<"Doi tuong tai :"<<this<<endl;
  cout<<"So chieu :"<<n<<endl;
  for(i=0;i<n;i++) cout <<v[i] <<" ";
  cout <<"\n";
}
void main()  {
  clrscr();
  vector s1;
  s1.display();
  vector s2(4);
  s2.display();
  float a[3]={1,2,3};
  vector s3(3,a);
  s3.display();
  getch();
  }
+Kết quả xuất ra màn hình:

Tao doi tuong tai 0xfff2
So chieu :3
Xin cap phat vung bo nho 3 so thuc tai0x13cc
Toa do thu 1 : 2
Toa do thu 2 : 3
Toa do thu 3 : 2
Doi tuong tai :0xfff2
So chieu :3
2 3 2
Su dung ham thiet lap 1 tham so
Tao doi tuong tai 0xffee
So chieu :4
Xin cap phat vung bo nho 4 so thuc tai0x13dc
Toa do thu 1 : 3
Toa do thu 2 : 2
Toa do thu 3 : 3
Toa do thu 4 : 2
Doi tuong tai :0xffee
So chieu :4
3 2 3 2
Su dung ham thiet lap 2 tham so
Tao doi tuong tai 0xffea
So chieu :3
Xin cap phat vung bo nho 3 so thuc tai0x13f0
Doi tuong tai :0xffea
So chieu :3
1 2 3
Doi tuong tai :0xfff2
So chieu :3
2 3 2
Giai phong 0x13f0cua doi tuong tai0xffea
Giai phong 0x13dccua doi tuong tai0xffee
Giai phong 0x13cccua doi tuong tai0xfff2
Các bạn có thể tham khảo thêm trong giáo trình tại đây.
avatar
Admin
Admin

Tổng số bài gửi : 148
Registration date : 17/12/2007

Xem lý lịch thành viên http://cnthk1.tk

Về Đầu Trang Go down

Bài thực hành về lớp string và vector

Bài gửi by pivien2k on 19/7/2008, 11:07 pm

Thêm một bài thực hành về vector
Download tại đây:mediafire.com ?njmx9wemwya

pivien2k
Khách viếng thăm


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết