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

Đề tài: Hướng dẫn cách khai báo lớp ?

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

    Question Hướng dẫn cách khai báo lớp ?

    Code:
    #include <stdio.h>
    #include <string.h>
    #include<iostream.h>
    void SortName(char a[][50], int n);
    
    int main ()
    {
        char fullName[50][50];
    	char masv[20][20];
    	int tuoi[20];
    	int i=0,number;
        cout << "So Sinh Vien can nhap : ";
    	cin >> number;
        while (i < number)
            {
    		    cout<<" - Nhap Ten SV " << i <<":";
                fflush(stdin);
                cin >> fullName[i];
    			cout<<" - Nhap Ma SV " << i << ":";
    			fflush(stdin);
                cin >> masv[i];
    			cout <<" - Nhap tuoi SV " << i << ":";
    			fflush(stdin);
    			cin >> tuoi[i];
    			i++;
            }
        SortName( fullName, number);
    	cout <<"\n Danh sach SV da sap xep:\n";
        for (i = 0; i < number; i ++)
    	{
    	 cout <<"   - Ten SV " << i <<":" <<fullName[i] <<"\n";
    	 cout <<"   - Ma SV " << i << ":" << masv[i]<<"\n";
    	 cout <<"   - Tuoi SV " << i <<":" << tuoi[i]<<"\n";
    	 cout <<"   ---------------------------\n";
    	}
        return 0;
    }
    
    void Name(char a[][50],char b[][50],int n)
    {
        int i,j,k;
        for(i=0;i<n;i++)
        {
            k=strlen(a[i]);
            while (a[i][k--]!=' ');
            j=0;k+=2;
            while (a[i][k]!='\0'){b[i][j++]=a[i][k++];}
            b[i][j]='\0';
        }
      
    }
    
    void SortName(char a[][50], int n)
    {
        int i,j;
        char b[50][50],temp[50];
        Name(a,b,n);
        for (i=0; i< n-1; i++)
            for (j=i+1; j< n; j++)
                if (strcmp(b[i],b[j]) > 0)//lenh strcmp so sanh b[i] voi b[j]
                {
                        strcpy(temp,a[i]);// lenh strcp gan a[i] vao bien temp
                        strcpy(a[i],a[j]);
                        strcpy(a[j],temp);
    
                        strcpy(temp,b[i]);
                        strcpy(b[i],b[j]);
                        strcpy(b[j],temp);
                }
                else if (strcmp(b[i],b[j])==0 && strcmp(a[i],a[j])>0)
                {
                        strcpy(temp,a[i]);
                        strcpy(a[i],a[j]);
                        strcpy(a[j],temp);
    
                        strcpy(temp,b[i]);
                        strcpy(b[i],b[j]);
                        strcpy(b[j],temp);
                }
    }
    Tôi muốn chuyển code trên thành dạng:
    Code:
    class Sinhvien{
    	char fullNam[50];
    	char masv[20];
    	int tuoi;
    //phương thức nhập tên tuổi
    void nhap();
    sắpxếp()
    //sắp xếp theo tên
    }
    ai có thể hướng dấn tôi cách khai báo và nhập, xuất dữ liệu trong class không? giúp với. thanks.
    Đã được chỉnh sửa lần cuối bởi bqonline : 28-02-2009 lúc 03:30 PM.
    VN

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Cái này đọc sách chút, lấy kiến thức cơ bản đã. Bạn đã học struct chưa, chỉ khác struct một chút thôi.

    Demo
    C Code:
    1. class SINHVIEN
    2. {
    3.      private:
    4.           char fullName[50][50];
    5.           char masv[20][20];
    6.           int tuoi[20];
    7.      public:
    8.           void SortName(char a[][50], int n);
    9. };

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

    Nếu bạn thích dùng class thì mình nghĩ bạn nên tìm hiểu chút ít về lập trình hướng đối tượng trong C++
    Khi đó bạn có thể tự thiết kế class theo hướng OOP hợp lý cho bài làm của mình.
    bigdog

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

    cám ơn các member đã quan tâm đến câu hỏi của mình. Mình đang làm bài tập điều kiện, chỉ cần làm kiến thức hoàn thành cho qua thôi, chứ không phải học đi sâu vào môn này. Cho nên mình chỉ cần kiến thức đủ để làm đc bài thôi. Mình có đọc tài liệu nhưng chưa hiểu về vấn đề này lắm. Vì vậy rất mong ai đó có thể giúp 1 phần kiến thức nho nhỏ này. Chăng hạn khi khai báo lớp như bạn QuangHoang phía trên, mình muốn nhập dữ liệu vào các phần tử khai báo trong lớp thì như thế nào? hay đại loại member nào có code phần class, nhập dữ liệu, sắp xếp theo cấu trúc mình hỏi phía trên... có giải thích các câu lệnh cho mình hiểu thì tốt nhất. Mình cảm ơn rất nhiều. Mình cũng chỉ cần thế thôi. thanks!
    VN

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

    Tôi muốn chuyển từ sắp xếp theo tuổi thành sắp xếp theo tên thì đoạn code dưới đây phải sửa như thế nào?
    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<iomanip.h>
    class sinhvien
     {
      private:
       char *hoten;
       char *maSinhVien;
       int tuoi;
      public:
       sinhvien()
        {
         hoten=new char[20];
         maSinhVien=new char[20];
         tuoi=0;
         }
       sinhvien(char *hoten1,char *maSinhVien1,int tuoi1)
        {
         hoten=hoten1;
         maSinhVien=maSinhVien1;
         tuoi=0;
         }
       ~sinhvien()
        {
         delete hoten;
         delete maSinhVien;
        }
       const sinhvien &operator =(const sinhvien &sv2)
        {
         this->tuoi=sv2.tuoi;
         strcpy(this->hoten,sv2.hoten);
         strcpy(this->maSinhVien,sv2.maSinhVien);
         return sv2;
         }
        void nhap(int i);
        void in();
        int gettuoi()
        
         {
          return tuoi;
         }
        void hv(sinhvien &sv2)
         {
          sinhvien tg;
                tg=*this;
    	*this=sv2;
    	  sv2=tg;
          }
     };
     void sinhvien::in()
      {
    	cout <<"|  " << hoten <<"   |    "<<maSinhVien<<"     |    " <<tuoi<<"|\n";
     }
    
     void sinhvien::nhap(int i)
    	
            {
              
    	 cout<<"Nhap so sinh vien: "<<i;
        cout<<"\n  Ho ten : ";
    	cin >> hoten;
    	cout<<"\n Ma Sinh Vien : ";
    	cin >> maSinhVien;
    	
        cout<<"\n tuoi : ";cin>>tuoi;
    	 i++;
     
            }  
     
    void main()
     {
      sinhvien sv[100];
      int i,j,n;
      cout<<"\n Nhap vao so sinh vien :";cin>>n;
      for (i=1;i<=n;++i)
       sv[i].nhap(i);
      cout<<"\n danh sach sinh vien da nhap";
      cout<<"\n----------------------------------------------\n";
      for (i=1;i<=n;++i)
       sv[i].in();
       for (i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
         if (sv[i].gettuoi() < sv[j].gettuoi())
          sv[i].hv(sv[j]);
    	  cout <<"_______________________________________________________\n";
          cout<<"\n danh sach sau khi sap xep";
    	  cout <<"\n----------------------------------------------\n";
        
      for (i=1;i<=n;++i)
          sv[i].in();
      getch();
     }
    VN

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

  1. Tệp tin *.lib khác *.dll khác nhau như thế nào ?
    Gửi bởi ngusaomanoi trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 18-12-2012, 05:15 PM
  2. Chính chủ cần bán CHCC 310 Minh Khai, bán chung cư 310 minh khai 87m tầng 8, cc 310 minh khai
    Gửi bởi nguyenminhanh trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 19-04-2012, 02:40 PM
  3. taị sao các biến static khi khai báo để dùng được lại phải khai báo lại trước hàm main ? ?
    Gửi bởi anhnpson trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 15-06-2011, 08:18 PM
  4. Lập trình C Thắc mắc về khai báo protoype và các hàm liên quan khi khai báo!
    Gửi bởi ganhim trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 10-08-2010, 02:03 PM
  5. Sự khác nhau giữa các khai báo int, void, float trong khai báo hàm?
    Gửi bởi toend2008 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: 06-05-2009, 07:19 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