Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách tạo và sử dụng thư viện?!?!?!?!

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

    Mặc định Cách tạo và sử dụng thư viện?!?!?!?!

    Cách pác chỉ em cách tạo và sử dụng thư viện do mình tự tạo ra nha.Ví dụ như MyString.h chẳng hạn!

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

    Đơn giản bạn viết một lớp hay những phương thức do bạn tự định nghĩa rồi save nó dưới dạng một file.h, rồi để nó vào thư mục include trong trình biên dịch của bạn. Khi sử dụng chỉ cần khai báo include<file.h> là bạn có thể sử dụng các phương thức do bạn tự định nghĩa.

    VD: Mình tạo một lớp điểm đơn giản
    Code:
    #ifndef diem_h
    #define diem_h
    #include <math.h>
    #include <iostream.h>
    class diem
    {
    	private:
    		int x,y;
       public:
       	diem(){x=0;y=0;}
          diem(int a,int b){x=a;y=b;}
          void set_hoanh(int a){x=a;}
          void set_tung(int b){y=b;}
          int get_hoanh(){return x;}
          int get_tung(){return y;}
          void set_diem(diem f)
          {x=f.x;y=f.y;}
          float KC(diem g)
          {return sqrt((x-g.x)*(x-g.x)+(y-g.y)*(y-g.y));}
          void show(){cout<<"("<<x<<"/"<<y<<")";}
    };
    #endif
    sau đó bạn save lại dưới sạng file có tên là diem.h rồi để nó vào thư mục include trong trình biên dịch của bạn.
    Sau đó mỗi khi bạn cần dùng đến nó thì chỉ cần khai báo #include<diem.h> là có thể sử dụng lớp điểm bạn vừa định nghĩa.

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

    Đọc lý thuyết về thư viện trước nhé:
    1. Công dụng:
    Tái sử dụng mức 1: câu lệnh → vòng lặp
    Tái sử dụng mức 2: tập câu lệnh → hàm
    Tái sử dụng mức 3: tập hàm → thư viện

    2. Định nghĩa:
    Thư viện là tập các hàm (các lớp, các đối tượng) được sử dụng thường xuyên và có liên quan với nhau.

    3. Tạo thư viện:
    3.1 Tập tin header (lưu trữ với tên là < Id. >.h):
    #ifndef < Id. >
    #define < Id. >
    < Khai báo cấu trúc >
    < Khai báo kiểu >
    < Khai báo hàm >
    < Các biến dùng chung >
    #endif
    3.2 Tập tin source (lưu trữ với tên là < Id. >.cpp):
    #include “< Id. >”
    < Định nghĩa các hàm >

    4. Sử dụng thư viện:
    #include “< Id. >.h” // thư viện do người dùng định nghĩa
    #include << Id. >> //thư viện chuẩn
    Ví dụ về lớp phân số được khai báo với 1 thư viện:
    file fraction.h:
    Code:
    #ifndef fraction_h
    #define fraction_h
    #include <iostream>
    #include <iomanip>
    #include <string>
    #include "common.h"
    #include "readme.h"
    using namespace std;
    class fraction
    {
          private:
                  int ts,ms;
          public:
                  fraction(int t = 0,int m = 1){ts = t; ms = m;}; 
                  string ftos(); //fraction to string
                  void stof(string&); //string to fraction
                  friend ostream& operator<<(ostream&,fraction&);
                  friend istream& operator>>(istream&,fraction&);
                  fraction operator~(); //reduce
                  fraction operator+(); //standard
                  fraction operator-(); //negative
                  fraction operator*(); //reciprocal
                  fraction operator+(fraction);
                  fraction operator-(fraction);
                  fraction operator*(fraction);
                  fraction operator/(fraction);
                  friend fraction result(fraction&,fraction&,char);
                  friend void cal(fraction&,fraction&,fraction&,char);
                  friend void intro(fraction&,fraction&,fraction&,char);
                  friend void rutgon(int,int,int,fraction&,int);
                  friend void cong(fraction&,fraction&);
                  friend void tru(fraction&,fraction&);
                  friend void nhan(fraction&,fraction&);
                  friend void chia(fraction&,fraction&);
                  
    };
    #endif
    file fraction.cpp:
    Code:
    #include "fraction.h"
    string fraction::ftos() //fraction to string
    {
       string s = itos(ts); ;
       if (ms != 1) s += '|' + itos(ms);
       return s;
    }
    void fraction::stof(string& s) //string to fraction
    {
         if (!isfrac(s))
         {
            ts = stoi(s);
            ms = 1;
         }
         else
         {
             int i = 0;
             int pos = i; int len = 1;
             while ( s[i++] != '|' ) ++len; 
             string num; 
             num.assign(s,pos,len); ts = stoi(num);
             pos = i; len = 1;
             while ( i < s.size() )
             { 
                   ++len;
                   ++i;
             }
             num.assign(s,pos,len); ms = stoi(num);
         }
         *this = +*this;
    }
    ostream& operator<<(ostream& cout,fraction& x) //xuat phan so
    {
             cout <<x.ts;
             if (x.ms != 1) cout<<'|' <<x.ms;
             return cout;
    }
    
    istream& operator>>(istream& cin,fraction& x) //nhap phan so
    {
             string s;
             cin >>s;
             x.stof(s);
             return cin;
    }
    fraction fraction::operator~() //reduce
    {
         int tmp = gcd(ts,ms);
         ts /= tmp;
         ms /= tmp;
         return *this;
    }
    fraction fraction::operator+() //standard
    {
         if (ms < 0)
         {
            ts = -ts;
            ms = -ms;
         }
         return *this;
    }
    fraction fraction::operator-() //negative
    {
         ts = -ts;
         return *this;
    }
    fraction fraction::operator*() //reciprocal
    {
         swap(ts,ms);
         return *this;
    }
    fraction fraction::operator+(fraction x)
    {
             return ~fraction(ts * x.ms + ms * x.ts,ms * x.ms);
    }
    fraction fraction::operator-(fraction x)
    {
             x = -x;
             return ~(*this + x);
    }
    fraction fraction::operator*(fraction x)
    {
              return ~fraction(ts * x.ts,ms * x.ms);
    }
    fraction fraction::operator/(fraction x)
    {
              x = +(*x);
              
              return ~(*this * x);
    }
    fraction result(fraction& a,fraction& b,char ope)
    {
         switch (ope)
         {
                case '+': return a+b; break;
                case '-': return a-b; break;
                case '*': return a*b; break;
                case '/': return a/b; break;
                default : break;           
         }
    }
    void cal(fraction& a,fraction& b,fraction& c,char ope)
    {
         int m = len(a.ts,a.ms),n = len(b.ts,b.ms),k = len(c.ts,c.ms);
         cout <<setw(m) <<a.ts <<"   " <<setw(n) <<b.ts <<"   " 
              <<setw(k) <<c.ts <<endl;
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<' ' <<ope <<' ';
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < k;++i) cout <<char(196);
         cout <<endl;
         cout <<setw(m) <<a.ms <<"   " <<setw(n) <<b.ms <<"   " 
              <<setw(k) <<c.ms <<"\n\n";
    }
    void intro(fraction& a,fraction& b,fraction& c,char ope)
    {
         system("cls");
         switch (ope)
         {
                case '+': phepcong(); break;
                case '-': pheptru(); break;
                case '*': phepnhan(); break;
                case '/': phepchia(); break;
                default : break;
         }
         system("pause");
         system("cls");
         cal(a,b,c,ope);
    }
    void rutgon(int T,int M,int r,fraction& c,int k)
    {
         cout <<endl 
              <<setw(r) <<T <<"   " <<setw(k) <<c.ts <<endl;
         for (int i = 0;i < r;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < k;++i) cout <<char(196);
         cout <<endl 
              <<setw(r) <<M <<"   " <<setw(k) <<c.ms <<endl;
    }
    void cong(fraction& a,fraction& b)
    {
         fraction c = a + b;
         intro(a,b,c,'+');
         
         int M = a.ms * b.ms;
         cout <<"Cac buoc thuc hien:\n\nM = " <<a.ms <<" * " <<b.ms 
              <<" = " <<M <<endl;
              
         int i = a.ts*b.ms,j = b.ts*a.ms;
         int m = len(a.ts,a.ms),n = len(b.ts,b.ms),k = len(c.ts,c.ms);
         int p = len(i,M),q = len(j,M);
         cout <<endl 
              <<setw(m) <<a.ts <<"   " <<setw(p) <<i <<"   "
              <<setw(n) <<b.ts <<"   " <<setw(q) <<j <<endl;
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < p;++i) cout <<char(196);
         cout <<" ; ";
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < q;++i) cout <<char(196);
         cout <<endl 
              <<setw(m) <<a.ms <<"   " <<setw(p) <<M <<"   "
              <<setw(n) <<b.ms <<"   " <<setw(q) <<M <<endl;
              
         int T = i + j,r = len(T,M);
         cout <<endl 
              <<setw(p) <<i <<"   " <<setw(q) <<j <<"   "
              <<setw(r) <<T <<endl;
         for (int i = 0;i < p;++i) cout <<char(196);
         cout <<" + ";
         for (int i = 0;i < q;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < r;++i) cout <<char(196);
         cout <<endl 
              <<setw(p) <<M <<"   " <<setw(q) <<M <<"   "
              <<setw(r) <<M <<endl;
              
         rutgon(T,M,r,c,k);
    }
    void tru(fraction& a,fraction& b)
    {
         fraction c = a - b;
         intro(a,b,c,'-');
         
         int M = a.ms * b.ms;
         cout <<"\nCac buoc thuc hien:\n\nM = " <<a.ms <<" * " <<b.ms 
              <<" = " <<M <<endl;
              
         int i = a.ts*b.ms,j = b.ts*a.ms;
         int m = len(a.ts,a.ms),n = len(b.ts,b.ms),k = len(c.ts,c.ms);
         int p = len(i,M),q = len(j,M);
         cout <<endl 
              <<setw(m) <<a.ts <<"   " <<setw(p) <<i <<"   "
              <<setw(n) <<b.ts <<"   " <<setw(q) <<j <<endl;
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < p;++i) cout <<char(196);
         cout <<" ; ";
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < q;++i) cout <<char(196);
         cout <<endl 
              <<setw(m) <<a.ms <<"   " <<setw(p) <<M <<"   "
              <<setw(n) <<b.ms <<"   " <<setw(q) <<M <<endl;
              
         int T = i - j,r = len(T,M);
         cout <<endl 
              <<setw(p) <<i <<"   " <<setw(q) <<j <<"   "
              <<setw(r) <<T <<endl;
         for (int i = 0;i < p;++i) cout <<char(196);
         cout <<" - ";
         for (int i = 0;i < q;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < r;++i) cout <<char(196);
         cout <<endl 
              <<setw(p) <<M <<"   " <<setw(q) <<M <<"   "
              <<setw(r) <<M <<endl;
              
         rutgon(T,M,r,c,k);
    }
    void nhan(fraction& a,fraction& b)
    {     
         fraction c = a * b;
         intro(a,b,c,'*');
         
         int M = a.ms * b.ms;
         int m = len(a.ts,a.ms),n = len(b.ts,b.ms),k = len(c.ts,c.ms);
         int T = a.ts * b.ts,r = len(T,M);
         cout <<"\nCac buoc thuc hien:\n\n"
              <<setw(m) <<a.ts <<"   " <<setw(n) <<b.ts <<"   "
              <<setw(r) <<T <<endl;
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<" * ";
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < r;++i) cout <<char(196);
         cout <<endl 
              <<setw(m) <<a.ms <<"   " <<setw(n) <<b.ms <<"   "
              <<setw(r) <<M <<endl;
              
         rutgon(T,M,r,c,k);
    }
    void chia(fraction& a,fraction& b)
    {
         fraction c = a / b;
         intro(a,b,c,'/');
         
         int M = a.ms * b.ts;
         int m = len(a.ts,a.ms),n = len(b.ts,b.ms),k = len(c.ts,c.ms);
         int T = a.ts * b.ms,r = len(T,M);
         cout <<"\nCac buoc thuc hien:\n\n"
              <<setw(m) <<a.ts <<"   " <<setw(n) <<b.ts <<"   "
              <<setw(m) <<a.ts <<"   " <<setw(n) <<b.ms <<"   "
              <<setw(r) <<T <<endl;
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<" / ";
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < m;++i) cout <<char(196);
         cout <<" * ";
         for (int i = 0;i < n;++i) cout <<char(196);
         cout <<" = ";
         for (int i = 0;i < r;++i) cout <<char(196);
         cout <<endl 
              <<setw(m) <<a.ms <<"   " <<setw(n) <<b.ms <<"   "
              <<setw(m) <<a.ms <<"   " <<setw(n) <<b.ts <<"   "
              <<setw(r) <<M <<endl;
              
         rutgon(T,M,r,c,k);
    }
    Khi nhúng vào 1 project thì chỉ được nhúng file .cpp, ko nhúng .h

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

    Cám ơn mấy huynh mình hiểu rùi.
    Nhưng mà Lamvtn có thể chỉ cho mình thêm việc nhúng file vào 1 project là gì vậy?

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Tức là add file vào project đó !

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

    Mặc định Cách tạo và sử dụng thư viện?!?!?!?!

    Project đc tạo bằng cách nào?

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Bạn biên dịch bằng trình biên dịch nào?

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

    Dùng BC 3.1!!!!!!

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

    File / New / Project
    Nó sẽ tạo thành file có phần mở rộng là .prj

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

    Cám ơn bạn nhiều.

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