Cần giúp sắp xếp tăng dần theo tên

/*Tạo lớp DATE có các thông tin ngày, tháng, năm và các phương thức nhập,
xuất dữ liệu. Xây dựng lớp NHANSU với các thông tin: tên, ngày sinh (kiểu
DATE), số CMTND và các phương thức nhập xuất dữ liệu. Viết chương trình
chính thực hiện nhập vào một danh sách n nhân sự, sau đó sắp xếp danh sách
theo chiểu tăng dần của tên và hiển thị danh sách đã sắp ra màn hình*/

#include <iostream>
#include <string.h>
using namespace std;
class DATE
{
private:
    int Day, Month, Year;
public:
    void Nhap()
    {
        cout << "Enter Day: ";
        cin >> Day;
        cout << "Enter Month: ";
        cin >> Month;
        cout << "Enter Year: ";
        cin >> Year;
    }
    void Xuat()
    {
        cout << "Day: " << Day;
        cout << "Month: " << Month;
        cout << "Year: " << Year;
    }
};
class NHANSU
{
private:
    int Month;
    int CMTND;
public:
    string Name;
    void Input()
    {
        cin.ignore();
        cout << "\nEnter Name: ";
        getline(cin, Name);
        cout << "\nEnter Month: ";
        cin >> Month;
        cout << "\nEnter CMTND: ";
        cin >> CMTND;
    }
    void Output()
    {
        cout << "\nName: " << Name;
        cout << "\nMonth: " << Month;
        cout << "\nCMTND: " << CMTND;
    }
};
int main()
{
    NHANSU S[50];
    int n;
    cout << "\nNhap so luong nhan su: ";
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cout << "\n\n\t\tNhap thong tin nhan su thu " << i;
        S[i].Input();
    }
    for (int i = 1; i <= n; i++)
    {
        cout << "\n\n\t\tThong tin nhan su thu " << i;
        S[i].Output();
    }
    cout << "\n\n\t\tDanh sach nhan su tang dan theo ten";
    for (int i = 0; i < n-1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (strcmp(S[i].Name, S[j].Name) > 0)
            {
                NHANSU temp;
                temp = S[i].Name;
                S[i].Name = S[j].Name;
                S[j].Name = temp;
           
                strcpy(temp, S[i].Name);
                strcpy(S[i].Name, S[j].Name);
                strcpy(S[i].Name, temp);
                /*string temp;
                temp = S[i].Name;
                S[i].Name = S[j].Name;
                S[j].Name = temp;
                S[i].Output();*/
            }
        }
    }
    cout << "\n";
    system("pause");
    return 0;
}

Đoạn swap của cậu trông tệ thật @@

  • Sao cậu lại gán xâu trong thuộc tính Name vào biến kiểu NhanSu?
  • Sao cậu lại copy xâu trong thuộc tính Name vào biến kiểu NhanSu?

Cậu gần tới nơi rồi, trả lời 2 câu hỏi gợi ý ở trên rồi code lại đoạn swap đấy nhé! :smile:

5 Likes

bạ sửa giúp mình đc ko ạ

Không cậu ơi @@

Nếu cậu không biết cách swap, cậu nên viết 1 chương trình nhỏ để luyện tập. Tớ chỉ đưa cậu cái thìa thôi, không bón cho cậu được đâu :smile:

2 Likes

giúp nhau tí thôi mà

Nếu cậu muốn giỏi viết code, cậu kỳ vọng tự dưng cậu sẽ giỏi code, hay cậu kỳ vọng cậu có cơ hội để rèn luyện và trở nên giỏi code? :smile:
Đây là cơ hội của cậu đó.

Tớ có thể cho cậu code, và hủy hoại tương lai của cậu, khi cậu thất nghiệp vì không thể viết nổi hàm swap khi ra trường, nhưng mà việc đó rất phi đạo đức đối với tớ, nên chắc tớ không làm đâu :smile:
Topic này sẽ được đóng lại vào ngày mai. Bạn nào có nhã ý “giúp” bạn ấy, vui lòng reply trong thời gian này nha! :smile:

3 Likes

This topic was automatically closed after 19 hours. New replies are no longer allowed.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?