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

Đề tài: Làm sao để ghép nhiều file lại vậy mấy bạn(.h,.cpp)

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

    Mặc định Làm sao để ghép nhiều file lại vậy mấy bạn(.h,.cpp)

    mình học lập trình đã lâu, nhưng vẫn chưa biết cách viết chuơng trình gồm nhiều file .h và .cpp,mình đã làm nhiều nhưng không gép đươc, nên đành viết chung vào 1 file .cpp. các bạn cố gắng chỉ rõ nha!thanks

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    đây mình họa cho bạn
    file baitap.h
    C++ Code:
    1. #include<time.h>
    2. #include<fstream.h>
    3. #include<stdio.h>
    4. #include<conio.h>
    5. #include<stdlib.h>
    6.  
    7. class DOC_GHI_FILE{
    8.     public:
    9.         int *a;
    10.         int n;
    11.         int k;
    12.         int vt;
    13.         double thoiGian;
    14.  
    15.         DOC_GHI_FILE();
    16.         void docFileData();
    17.         void ghiFileData();
    18.         void ghiFileOut(char c[]);
    19. };
    20. class TIM_KIEM {
    21.     public:
    22.         int timKiemNPL(int a[], int l, int r, int k);
    23.         int timKiemNPDQ(int a[],int l, int r, int k);
    24. };
    25.  
    26. class SAP_XEP{
    27.     public:
    28.         void chonTrucTiep(int a[], int n);
    29.         void bubbleSort(int a[], int n);
    30.         void chenTrucTiep(int a[], int n);
    31. };
    32. class THOI_GIAN {
    33.     public:
    34.         clock_t start;
    35.         clock_t end;
    36.         void batDau();
    37.         void ketThuc();
    38. };

    File baitap.cpp (source)
    C++ Code:
    1. #include "baitap.h"
    2.  
    3.     //ham tim kiem nhi phan lap
    4.     int TIM_KIEM::timKiemNPL(int a[],int l,int r,int k)
    5.     {
    6.         int m;
    7.         while(l<=r)     //trong khi trai <= phai
    8.         {
    9.             m=(l+r)/2;      //phan tu giua mang
    10.             if(a[m]>k)  //so sanh voi k, neu > k thi loai bo khoi phep so sanh tu giua ve sau
    11.                 r=m-1;
    12.             else
    13.                 if(a[m]<k)  //neu be hon k thi loai bo khoi phep so sanh tu giua ve truoc
    14.                     l=m+1;
    15.                 else
    16.                     return m;   //neu khong thi tra ve m
    17.         }
    18.         return -1;              //neu khong thi tra ve -1
    19.     }
    20.     //tim kiem nhi phan de quy
    21.  
    22.     int TIM_KIEM::timKiemNPDQ(int a[],int l,int r,int k)
    23.     {
    24.         int m;
    25.         if(l>r)         //neu trai lon hon phai tra ve -1
    26.             return -1;
    27.         m=(l+r)/2;      //vi tri giua mang
    28.         if(a[m]>k)      //so sanh phan tu giua mang voi k
    29.             return timKiemNPDQ(a,l,m-1,k);  //neu lon hon thi goi lai ham
    30.         else
    31.             if(a[m]<k)      //so sanh
    32.                 return timKiemNPDQ(a,m+1,r,k);//neu be hon thi goi lai
    33.             else return m;          //tra ve m
    34.     }
    35.     //sap xep tang dan
    36.     void SAP_XEP::chonTrucTiep(int a[], int n){
    37.           int posMin;
    38.           int temp;
    39.           for(int i=0;i<n-1;i++){
    40.           //tim vi tri cua phan tu nho nhat tu a[i] den a[n-1]
    41.           posMin=i;
    42.           for(int j=i+1;j<n;j++)
    43.              if(a[j]<a[posMin])
    44.             posMin=j;
    45.           // Hoan vi a[i] va a[posMin]
    46.           temp=a[i];
    47.           a[i]=a[posMin];
    48.           a[posMin]=temp;
    49.           };
    50.     };
    51.     //sap xep giam dan
    52.     void SAP_XEP::bubbleSort(int a[],int n){
    53.            int temp;
    54.            for(int i=0;i<n-1;i++)
    55.           for(int j=n-1;j>i;j--)
    56.              if(a[j]>a[j-1]){
    57.             temp=a[j-1];
    58.             a[j-1]=a[j];
    59.             a[j]=a[j-1];
    60.             };
    61.     };
    62.     void SAP_XEP::chenTrucTiep(int a[], int n){
    63.            int j;
    64.            int x;
    65.            for(int i=1;i<n;i++){
    66.           x=a[i];
    67.           j=i-1;
    68.           while(a[j]>x&&j>0){
    69.              a[j+1]=a[j];
    70.              j--;
    71.              };
    72.           a[j+1]=x;
    73.            };
    74.         };
    75.     void THOI_GIAN::batDau(){
    76.            start=clock();
    77.            };
    78.     void THOI_GIAN::ketThuc(){
    79.            end=clock();
    80.            };
    81.     DOC_GHI_FILE::DOC_GHI_FILE(){
    82.          ofstream f("C:\\OUT.TXT",ios::trunc);
    83.          f<<"\nTinh Thoi gian chay cac thuat toan:"<<endl;
    84.          f.close();
    85.     };
    86.     void DOC_GHI_FILE::docFileData(){
    87.          ifstream f("C:\\DATA.TXT",ios::in);
    88.          if(f.bad()){
    89.          cout<<"\nKhong the mo file"<<endl;
    90.          getch();
    91.          exit(1);
    92.          };
    93.          f.seekg(0,ios::beg);
    94.          f>>n;
    95.          a=new int[n];
    96.          for(int i=0;i<n;i++)
    97.          f>>a[i];
    98.          f.close();
    99.     };
    100.     void DOC_GHI_FILE::ghiFileData(){
    101.          ofstream f("C:\\DATA.TXT",ios::out);
    102.          if(f.bad()){
    103.         cout<<"\nKhong the mo file"<<endl;
    104.         getch();
    105.         exit(1);
    106.         };
    107.          cout<<"\nNhap vao so phan tu mang: ";
    108.          cin>>n;
    109.          f<<n<<endl;
    110.          srand(time(0));
    111.          for(int i=0;i<n;i++){
    112.         int m=rand()%n+1;
    113.         f<<m<<endl;
    114.         };
    115.          f.close();
    116.          n=0;
    117.     };
    118.     void DOC_GHI_FILE::ghiFileOut(char c[]){
    119.  
    120.          ofstream f("C:\\OUT.TXT",ios::ate);
    121.  
    122.          if(vt==0){
    123.         f<<"\nThoi gian chay thuat toan "<<c<<" la: ";
    124.         f<<thoiGian<<endl;
    125.         f.close();
    126.         }
    127.          else if(vt==-1){
    128.              f<<"\nKhong tim thay khoa "<<k;
    129.              f<<"\nThoi gian chay thuat toan "<<c<<" la: ";
    130.              f<<thoiGian<<endl;
    131.              f.close();
    132.              }
    133.           else  {
    134.             f<<"\nVi tri tim thay la: "<<vt;
    135.             f<<"\nThoi gian chay thuat toan "<<c<<" la: ";
    136.             f<<thoiGian<<endl;
    137.             f.close();
    138.                };
    139.  
    140.  
    141.     };

    file main.cpp (test)
    C++ Code:
    1. #include "baitap.cpp"
    2.  
    3. void main(){
    4.     TIM_KIEM tk;
    5.     SAP_XEP sx;
    6.     THOI_GIAN tg;
    7.     DOC_GHI_FILE dg;
    8.  
    9.  
    10.     clrscr();
    11.     dg.ghiFileData();
    12.     dg.docFileData();
    13.  
    14.     cout<<"\nNhap vao khoa can tim: ";
    15.     cin>>dg.k;
    16.  
    17.  
    18.     //Bat dau dem thoi gian cac thuat toan
    19.  
    20.     dg.vt=0;
    21.     tg.batDau();                //Bat dau dem thoi gian
    22.     sx.chonTrucTiep(dg.a,dg.n);
    23.     tg.ketThuc();
    24.     dg.thoiGian=(tg.end-tg.start)/CLK_TCK;                //Ket thuc giai thuat
    25.     dg.ghiFileOut("Sap xep chon truc tiep");
    26.  
    27.     dg.docFileData();               //Doc lai de sap xep lan sau
    28.     tg.batDau();                //Bat dau dem thoi gian
    29.     sx.bubbleSort(dg.a,dg.n);
    30.     tg.ketThuc();
    31.     dg.thoiGian=(tg.end-tg.start)/CLK_TCK;                //Ket thuc giai thuat
    32.     dg.ghiFileOut("Sap xep noi bot");
    33.  
    34.     dg.docFileData();               //Doc lai de sap xep lan sau
    35.     tg.batDau();                //Bat dau dem thoi gian
    36.     sx.chenTrucTiep(dg.a,dg.n);
    37.     tg.ketThuc();
    38.     dg.thoiGian=(tg.end-tg.start)/CLK_TCK;                //Ket thuc giai thuat
    39.     dg.ghiFileOut("Sap xep chen truc tiep");
    40.  
    41.     tg.batDau();                //Bat dau dem thoi gian
    42.     dg.vt=tk.timKiemNPL(dg.a,0,dg.n,dg.k);
    43.     tg.ketThuc();
    44.     dg.thoiGian=(tg.end-tg.start)/CLK_TCK;                //Ket thuc giai thuat
    45.     dg.ghiFileOut("Tim Kiem Nhi Phan Lap");
    46.  
    47.     tg.batDau();                //Bat dau dem thoi gian
    48.     dg.vt=tk.timKiemNPDQ(dg.a,0,dg.n,dg.k);
    49.     tg.ketThuc();
    50.     dg.thoiGian=(tg.end-tg.start)/CLK_TCK;                //Ket thuc giai thuat
    51.     dg.ghiFileOut("Tim Kiem Nhi Phan De Qui");
    52.  
    53. };
    Không biết ghi gì luôn ...

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Anh thấy cái class TIMKIEM và class SAPXEP không có ý nghĩa của 1 class, nó giống các standalone funtion hơn. Và class THOIGIAN lại càng không có quan hệ gì, em nên tạo 1 class hold dữ liệu thời gian và cả mãng đó. Để các phượng thức TIMKIEM SAP XEP vào 1 namespace.
    Opps, nothing private T_T, watch out ht T_T !

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Anh thấy cái class TIMKIEM và class SAPXEP không có ý nghĩa của 1 class, nó giống các standalone funtion hơn. Và class THOIGIAN lại càng không có quan hệ gì, em nên tạo 1 class hold dữ liệu thời gian và cả mãng đó. Để các phượng thức TIMKIEM SAP XEP vào 1 namespace.
    Opps, nothing private T_T, watch out ht T_T !
    Cảm ơn anh!
    Bài này em làm lâu rùi, (hồi còn mới tập tò hướng đối tượng mà). Bài đó ht post lên là để mình họa yêu cầu của bạn kia thôi.
    Không biết ghi gì luôn ...

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

  1. Lập trình C++ Cách đọc dữ liệu từ File .txt vào nhiều mảng?
    Gửi bởi emoihoc 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: 15-03-2013, 06:01 PM
  2. Xử lý nhiều thread truyền nhiều file lớn như thế nào ?
    Gửi bởi iamme22021990 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 03-01-2012, 09:19 PM
  3. Gộp nhiều file .h thành 1 file .h duy nhất trong VC++
    Gửi bởi langman trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 05-03-2011, 07:58 PM
  4. Tách tự động một file source ra thành nhiều file
    Gửi bởi iamme22021990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 07-07-2009, 08:51 PM
  5. Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần?
    Gửi bởi totoise trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 19-04-2009, 08:21 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