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

Đề tài: Cần giúp đỡ về hàm sắp xếp.

  1. #1
    Ngày gia nhập
    02 2012
    Bài viết
    0

    Mặc định Cần giúp đỡ về hàm sắp xếp.

    Mình là newbie, mới học C++ được một thời gian, hiện tại mình đang có bài tập về sắp xếp sinh viên theo mã sinh viên, mà làm hoài toàn báo lỗi, mong moi người giúp minh với
    Hiện tại mình đã sửa được lỗi, nhưng khi chạy phần sắp xếp thì nó lại không sắp xếp, và khi nhập sinh viên thì có hiện tượng thông số chuyển thành 09bje034..., mong ae giúp đỡ
    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<fstream.h>
    4. #include<string.h>
    5. #include<stdio.h>
    6. class Sinhvien
    7. {
    8.     private:
    9.         char ID_SV[11];
    10.         char name[26];
    11.         char birthday[16];
    12.         char address[51];
    13.         char phone[11];
    14.         char course[26];
    15.         float amount;
    16.  
    17.     public:
    18.         Sinhvien()  
    19.         {
    20.         ID_SV[0]='\0';
    21.         name[0]='\0';
    22.         birthday[0]='\0';
    23.         address[0]='\0';
    24.         phone[0]='\0';
    25.         course[0]='\0';
    26.         amount=0;
    27.         }
    28.         void nhap();
    29.         void xuat();
    30.         char *getID()
    31.         {
    32.         return ID_SV;
    33.         }
    34.         char *getcourse()
    35.         {
    36.         return course;
    37.         }
    38.         char *getname()
    39.         {
    40.         return name;
    41.         }
    42.        
    43. };
    44. void Sinhvien::nhap()
    45. {
    46.     cout << "Ma sinh vien: ";
    47.         cin >> ID_SV;
    48.         cin.ignore();
    49.         cout << endl << "Ten sinh vien: ";
    50.         cin.getline(name,26);
    51.         cout << endl << "Ngay sinh  sinh vien: ";
    52.         cin >> birthday;
    53.         cin.ignore();
    54.         cout << endl << "Dia chi sinh vien: ";
    55.         cin.getline(address,51);
    56.         cout << endl << "So dien thoai: ";
    57.         cin.getline(phone,11);
    58.         cout << endl << "Khoa hoc: ";
    59.         cin >> course;
    60.         cout << endl << "So tien thanh toan: ";
    61.         cin >> amount;
    62. }
    63. void Sinhvien::xuat()
    64. {
    65.         cout<<"|"<<ID_SV<<" | "<<name<<"  |  "<<birthday<<"  |  "<<address<<"  |  "<<phone<<"  |  "<<course<<"  |  "<<amount<<"|"<<endl;
    66. }
    67. void main()
    68. {
    69.     clrscr();
    70.     Sinhvien obj[3];
    71.     int chon;
    72.     while(1)
    73.     {   menu:
    74.         cout<<"\t\t\t****  QUAN LY SINH VIEN   *****";
    75.         cout<<"\n\t\t\t+------+---------------------------+";
    76.         cout<<"\n\t\t\t|   1  + Nhap thong tin sinh vien  |";
    77.         cout<<"\n\t\t\t+------+---------------------------+";
    78.         cout<<"\n\t\t\t|   2  + Xem thong tin sinh vien   |";
    79.         cout<<"\n\t\t\t+----------------------------------+";
    80.         cout<<"\n\t\t\t|   3  + Sap xep thong tin         |";
    81.         cout<<"\n\t\t\t+----------------------------------+";
    82.         cout<<"\n\t\t\t|   4  + Xoa thong tin sinh vien   +";
    83.         cout<<"\n\t\t\t+----------------------------------+";
    84.         cout<<"\n\t\t\t|   5  + Thoat khoi chuong trinh   +";
    85.         cout<<"\n\t\t\t+----------------------------------+";
    86.         cout<<endl;
    87.         cout<<"chon cac so tu 1 den 5"<<endl;
    88.         cin>>chon;
    89.         switch(chon)
    90.         {
    91.             case 1:
    92.             {
    93.                 clrscr();
    94.                 ofstream ofile("Sinhvien.dat");
    95.                 cout<<"Nhap thong tin sinh vien:"<<endl;
    96.                 for (int i=0;i<3;i++)
    97.                 {
    98.                     obj[i].nhap();
    99.                     ofile.write((char *)&obj[i],sizeof(obj[i]));
    100.                 };
    101.                 ofile.close();
    102.                 goto menu;
    103.             }
    104.             case 2:
    105.             {
    106.                 clrscr();
    107.                 int chon_SV;
    108.                 while(1)
    109.                 {   menuSV:
    110.                     cout<<"==========================================\n";
    111.                     cout<<"\n\nThong tin sinh vien\n";
    112.                     cout<<"\n 1.Hien thi thong tin sinh vien\n";
    113.                     cout<<"\n 2.Hien thi theo ID \n";
    114.                     cout<<"\n 3.Hien thi theo ten khoa hoc \n";
    115.                     cout<<"\n 4. Thoat\n";
    116.                     cout<<"===========================================\n";
    117.                     cout<<"\n Hay chon tu 1 den 4 \t";
    118.                     cin>>chon_SV;
    119.                     if(chon_SV==1)
    120.                     {
    121.                         clrscr();
    122.                         ifstream ifile("Sinhvien.dat");
    123.                         cout<<"| ID | Ten | Ngay sinh  | Dia chi  |dien thoai| Khoa hoc  |Tien hoc |"<<endl;
    124.                         cout<<"-----------------------------------------------------------------------"<<endl;
    125.                         for (int k=0;k<3;k++)
    126.                         {
    127.                             ifile.read((char*)&obj[k],sizeof(obj[k]));
    128.                             while(ifile)
    129.                             {
    130.                                 obj[k].xuat();
    131.                                 ifile.read((char *)&obj[k],sizeof(obj[k]));
    132.                          
    133.                             }
    134.                         };
    135.                         ifile.close();
    136.                         getch();
    137.                         goto menuSV;
    138.                     };
    139.                     if(chon_SV==2)
    140.                     {
    141.                         clrscr();
    142.                         ifstream ie("Sinhvien.dat");
    143.                         char timID[11];
    144.                         int flag=0;
    145.                         cout<<"Nhap ID sinh vien can tim:\n";
    146.                         cin>>timID;
    147.                         for(int m=0;m<3;m++)
    148.                         {
    149.                             ie.read((char *)&obj[m],sizeof(obj[m]));
    150.                             if (strcmp(obj[m].getID(),timID)==0)
    151.                             {
    152.                                 obj[m].xuat();
    153.                                 ie.read((char *)&obj[m],sizeof(obj[m]));
    154.                                 flag=1;
    155.                             };
    156.                         };
    157.                         ie.close();
    158.                         if(flag==0)
    159.                         cout<<"\nkhong tim thay sinh vien co ma:"<< timID;
    160.                         getch();
    161.                         goto menuSV;
    162.                     };
    163.                     if(chon_SV==3)
    164.                     {
    165.                         clrscr();
    166.                         ifstream ief("Sinhvien.dat");
    167.                         char timKH[26];
    168.                         int flag1=0;
    169.                         int dem=0;
    170.                         cout<<"Nhap khoa hoc can tim:\n";
    171.                         cin>>timKH;
    172.                         for(int n=0;n<3;n++)
    173.                         {
    174.                             ief.read((char *)&obj[n],sizeof(obj[n]));
    175.                             if (strcmp(obj[n].getcourse(),timKH)==0)
    176.                             {
    177.                                 obj[n].xuat();
    178.                                 ief.read((char *)&obj[n],sizeof(obj[n]));
    179.                                 flag1=1;
    180.                                 dem++;
    181.                             };
    182.                         };
    183.                         ief.close();
    184.                         cout<<"\n So sinh vien theo khoa hoc do la:"<<dem;
    185.                         if(flag1==0)
    186.                         cout<<"\nkhong tim thay sinh vien co khoa hoc:"<< timKH;
    187.                         getch();
    188.                         goto menuSV;
    189.                     };
    190.                     if(chon_SV==4)
    191.                     goto menu;
    192.                 break;
    193.                 }
    194.             break;
    195.             }
    196.             case 3:
    197.             {
    198.             clrscr();
    199.             ifstream ife("Sinhvien.dat");
    200.             for(int a=1;a<3;a++)
    201.                 {
    202.                 ife.read((char*)&obj[a],sizeof(obj[a]));
    203.                 for(int b=0;b<2;b++)
    204.                 {   ife.read((char*)&obj[b],sizeof(obj[b]));
    205.                     if(strcmp(obj[b].getname(),obj[b+1].getname())>0)
    206.                     {
    207.                         char ten[26];
    208.                         strcpy(ten,obj[b].getname());
    209.                         strcpy(obj[b].getname(),obj[b+1].getname());
    210.                         strcpy(obj[b+1].getname(),ten);
    211.                     };
    212.                 };
    213.                 };
    214.                 ife.close();
    215.                 goto menu;
    216.             }
    217.             case 4:
    218.             {
    219.             remove("Sinhvien.dat");
    220.             break;
    221.             }
    222.             case 5:
    223.             break;
    224.             default:cout<<"Ban phai chon tu 1 den 5";
    225.         }
    226. break;     
    227. }
    228. getch();
    229. }
    Đã được chỉnh sửa lần cuối bởi hikaru254 : 12-02-2012 lúc 07:46 PM.

  2. #2
    Ngày gia nhập
    01 2011
    Bài viết
    11

    C++ Code:
    1. void sapxep(char a[], int n)
    2. {   char tam;
    3.     for(int i=0;i<n;i++)
    4.     {   for(int j=i+1;j<n;j++)
    5.         {   if(a[j]>a[i])
    6.             {
    7.                 tam=a[j];
    8.                 a[j]=a[i];
    9.                 a[i]=tam;
    10.             }
    11.         }
    12.     }
    13. }
    Sắp xếp sinh viên mà đối là char sao ?? Hiện tại mình không có thời gian nên mới nhìn lướt qua code, bạn thử sửa lại như sau xem
    C++ Code:
    1. void sapxep(sinhvien a[], int n)
    2. {   sinhvien tam;
    3.     for(int i=0;i<n;i++)
    4.     {   for(int j=i+1;j<n;j++)
    5.         {   if(strcmp(a[j].ID_SV, a[i].ID_SV) > 1)
    6.             {
    7.                 tam=a[j];
    8.                 a[j]=a[i];
    9.                 a[i]=tam;
    10.             }
    11.         }
    12.     }
    13. }
    Code is more than binary. Its poetry

  3. #3
    Ngày gia nhập
    02 2012
    Bài viết
    0

    Mình thử rồi, không được bạn ơy, hiện tại thì mình dùng cách khác , không thấy lỗi nữa, nhưng chạy sắp xếp thì nó không sắp xếp được:(
    C++ Code:
    1.  
    2. #include<iostream.h>
    3. #include<conio.h>
    4. #include<fstream.h>
    5. #include<string.h>
    6. #include<stdio.h>
    7. class Sinhvien
    8. {
    9.     private:
    10.         char ID_SV[11];
    11.         char name[26];
    12.         char birthday[16];
    13.         char address[51];
    14.         char phone[11];
    15.         char course[26];
    16.         float amount;
    17.  
    18.     public:
    19.         Sinhvien()  
    20.         {
    21.         ID_SV[0]='\0';
    22.         name[0]='\0';
    23.         birthday[0]='\0';
    24.         address[0]='\0';
    25.         phone[0]='\0';
    26.         course[0]='\0';
    27.         amount=0;
    28.         }
    29.         void nhap();
    30.         void xuat();
    31.         char *getID()
    32.         {
    33.         return ID_SV;
    34.         }
    35.         char *getcourse()
    36.         {
    37.         return course;
    38.         }
    39.         char *getname()
    40.         {
    41.         return name;
    42.         }
    43.        
    44. };
    45. void Sinhvien::nhap()
    46. {
    47.     cout << "Ma sinh vien: ";
    48.         cin >> ID_SV;
    49.         cin.ignore();
    50.         cout << endl << "Ten sinh vien: ";
    51.         cin.getline(name,26);
    52.         cout << endl << "Ngay sinh  sinh vien: ";
    53.         cin >> birthday;
    54.         cin.ignore();
    55.         cout << endl << "Dia chi sinh vien: ";
    56.         cin.getline(address,51);
    57.         cout << endl << "So dien thoai: ";
    58.         cin.getline(phone,11);
    59.         cout << endl << "Khoa hoc: ";
    60.         cin >> course;
    61.         cout << endl << "So tien thanh toan: ";
    62.         cin >> amount;
    63. }
    64. void Sinhvien::xuat()
    65. {
    66.         cout<<"|"<<ID_SV<<" | "<<name<<"  |  "<<birthday<<"  |  "<<address<<"  |  "<<phone<<"  |  "<<course<<"  |  "<<amount<<"|"<<endl;
    67. }
    68. void main()
    69. {
    70.     clrscr();
    71.     Sinhvien obj[3];
    72.     int chon;
    73.     while(1)
    74.     {   menu:
    75.         cout<<"\t\t\t****  QUAN LY SINH VIEN   *****";
    76.         cout<<"\n\t\t\t+------+---------------------------+";
    77.         cout<<"\n\t\t\t|   1  + Nhap thong tin sinh vien  |";
    78.         cout<<"\n\t\t\t+------+---------------------------+";
    79.         cout<<"\n\t\t\t|   2  + Xem thong tin sinh vien   |";
    80.         cout<<"\n\t\t\t+----------------------------------+";
    81.         cout<<"\n\t\t\t|   3  + Sap xep thong tin         |";
    82.         cout<<"\n\t\t\t+----------------------------------+";
    83.         cout<<"\n\t\t\t|   4  + Xoa thong tin sinh vien   +";
    84.         cout<<"\n\t\t\t+----------------------------------+";
    85.         cout<<"\n\t\t\t|   5  + Thoat khoi chuong trinh   +";
    86.         cout<<"\n\t\t\t+----------------------------------+";
    87.         cout<<endl;
    88.         cout<<"chon cac so tu 1 den 5"<<endl;
    89.         cin>>chon;
    90.         switch(chon)
    91.         {
    92.             case 1:
    93.             {
    94.                 clrscr();
    95.                 ofstream ofile("Sinhvien.dat");
    96.                 cout<<"Nhap thong tin sinh vien:"<<endl;
    97.                 for (int i=0;i<3;i++)
    98.                 {
    99.                     obj[i].nhap();
    100.                     ofile.write((char *)&obj[i],sizeof(obj[i]));
    101.                 };
    102.                 ofile.close(); 
    103.                 break;
    104.             }
    105.             case 2:
    106.             {
    107.                 clrscr();
    108.                 int chon_SV;
    109.                 while(1)
    110.                 {   menuSV:
    111.                     cout<<"==========================================\n";
    112.                     cout<<"\n\nThong tin sinh vien\n";
    113.                     cout<<"\n 1.Hien thi thong tin sinh vien\n";
    114.                     cout<<"\n 2.Hien thi theo ID \n";
    115.                     cout<<"\n 3.Hien thi theo ten khoa hoc \n";
    116.                     cout<<"\n 4. Thoat\n";
    117.                     cout<<"===========================================\n";
    118.                     cout<<"\n Hay chon tu 1 den 4 \t";
    119.                     cin>>chon_SV;
    120.                     if(chon_SV==1)
    121.                     {
    122.                         clrscr();
    123.                         ifstream ifile("Sinhvien.dat");
    124.                         cout<<"| ID | Ten | Ngay sinh  | Dia chi  |dien thoai| Khoa hoc  |Tien hoc |"<<endl;
    125.                         cout<<"-----------------------------------------------------------------------"<<endl;
    126.                         for (int k=0;k<3;k++)
    127.                         {
    128.                             ifile.read((char*)&obj[k],sizeof(obj[k]));
    129.                             while(ifile)
    130.                             {
    131.                                 obj[k].xuat();
    132.                                 ifile.read((char *)&obj[k],sizeof(obj[k]));
    133.                          
    134.                             }
    135.                         };
    136.                         ifile.close();
    137.                         getch();
    138.                         goto menuSV;
    139.                     };
    140.                     if(chon_SV==2)
    141.                     {
    142.                         clrscr();
    143.                         ifstream ie("Sinhvien.dat");
    144.                         char timID[11];
    145.                         int flag=0;
    146.                         cout<<"Nhap ID sinh vien can tim:\n";
    147.                         cin>>timID;
    148.                         for(int m=0;m<3;m++)
    149.                         {
    150.                             ie.read((char *)&obj[m],sizeof(obj[m]));
    151.                             if (strcmp(obj[m].getID(),timID)==0)
    152.                             {
    153.                                 obj[m].xuat();
    154.                                 ie.read((char *)&obj[m],sizeof(obj[m]));
    155.                                 flag=1;
    156.                             };
    157.                         };
    158.                         ie.close();
    159.                         if(flag==0)
    160.                         cout<<"\nkhong tim thay sinh vien co ma:"<< timID;
    161.                         getch();
    162.                         goto menuSV;
    163.                     };
    164.                     if(chon_SV==3)
    165.                     {
    166.                         clrscr();
    167.                         ifstream ief("Sinhvien.dat");
    168.                         char timKH[26];
    169.                         int flag1=0;
    170.                         int dem=0;
    171.                         cout<<"Nhap khoa hoc can tim:\n";
    172.                         cin>>timKH;
    173.                         for(int n=0;n<3;n++)
    174.                         {
    175.                             ief.read((char *)&obj[n],sizeof(obj[n]));
    176.                             if (strcmp(obj[n].getcourse(),timKH)==0)
    177.                             {
    178.                                 obj[n].xuat();
    179.                                 ief.read((char *)&obj[n],sizeof(obj[n]));
    180.                                 flag1=1;
    181.                                 dem++;
    182.                             };
    183.                         };
    184.                         ief.close();
    185.                         cout<<"\n So sinh vien theo khoa hoc do la:"<<dem;
    186.                         if(flag1==0)
    187.                         cout<<"\nkhong tim thay sinh vien co khoa hoc:"<< timKH;
    188.                         getch();
    189.                         goto menuSV;
    190.                     };
    191.                     if(chon_SV==4)
    192.                     goto menu;
    193.                 break;
    194.                 }
    195.             break;
    196.             }
    197.             case 3:
    198.             {
    199.             clrscr();
    200.             ifstream ife("Sinhvien.dat");
    201.             for(int a=1;a<3;a++)
    202.                 {
    203.                 ife.read((char*)&obj[a],sizeof(obj[a]));
    204.                 for(int b=0;b<2;b++)
    205.                 {   ife.read((char*)&obj[b],sizeof(obj[b]));
    206.                     if(strcmp(obj[b].getname(),obj[b+1].getname())>0)
    207.                     {
    208.                         char ten[26];
    209.                         strcpy(ten,obj[b].getname());
    210.                         strcpy(obj[b].getname(),obj[b+1].getname());
    211.                         strcpy(obj[b+1].getname(),ten);
    212.                     };
    213.                 };
    214.                 };
    215.                 ife.close();
    216.                 goto menu;
    217.             }
    218.             case 4:
    219.             {
    220.             remove("Sinhvien.dat");
    221.             break;
    222.             }
    223.             case 5:
    224.             break;
    225.             default:cout<<"Ban phai chon tu 1 den 5";
    226.         }
    227. break;     
    228. }
    229. getch();
    230. }

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

    Vừa đọc từ file ra vừa đòi sắp xếp luôn ?? Ghê dữ vậy ?

    Mọi thứ thao tác dữ liệu nên được làm ở trên RAM, tức là nạp vào RAM hết rồi thao tác
    ___
    Viết cái hàm bạn swap trong class đấy
    Rồi lật lại cuốn sách xem về cái hàm bạn (friend function) mà sửa lại cho nó chạy
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    02 2012
    Bài viết
    0

    Mình mới học C++ một thời gian, có nhiều lỗ hổng kiến thức, mong bạn giúp mình 1 tẹo, mai là mình phải gửi bài cho thầy rồi, cám ơn bạn nhiều

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc định Cần giúp đỡ về hàm sắp xếp.

    Chịu. Hổng thì cố tìm lại nhanh đi(nhanh thôi, mất vài tiếng nếu tập trung), bằng ko thì Nhân nào Quả nấy. Ráng mà đỡ
    Ấy thế mà Nước đến chân mới chịu nhảy, mai nộp. Hôm nay mới mò tay vào làm
    Um Mani Padme Hum...!!

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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