Giúp hàm tìm kiếm sản phẩm

Bác nào giúp e cái hàm find này với ạ, nhập n = 2 thì nó ra 2 cái nhập id muốn tìm, nhập 3 thì ra 3

#include <iostream>
using namespace std;
class sp
{
private:
    string name, id;
    int soluong;
public:
    void nhap();
    void xuat();
    int get_SL();
    void sapxep(sp[], int);
    friend void max(sp[], int);
    void find(sp[], int);
};
void sp::nhap()
{
    fflush(stdin);
    cout << "Nhap ten: ";
    getline(cin, name);
    cout << "Nhap id: ";
    getline(cin, id);
    cout << "Nhap so luong: ";
    cin >> soluong;
}
void sp::xuat()
{
    cout << "name: " << name << endl;
    cout << "id: " << id << endl;
    cout << "so luong: " << soluong << endl;
    cout << "\n";
}
void sp::sapxep(sp s[], int n)
{
    sp temp;
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (s[i].name > s[j].name)
            {
                temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
}
void max(sp s[], int n)
{
    int max = s[0].soluong;
    for (int i = 0; i < n; i++)
    {
        if (s[i].soluong > max)
        {
            max = s[i].soluong;
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (s[i].soluong == max)
        {
            s[i].xuat();
        }
    }
}
void sp::find(sp s[], int n)
{
    string your_id;
    cout << "Nhap id muon tim: ";
    getline(cin, your_id);
    for (int i = 0; i < n; i++)
    {
        if (s[i].id == your_id)
        {
            s[i].xuat();
        }
    }
}
int main()
{
    sp s[100];
    int n;
    cout << "Nhap n: ";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cout << "\n\n\t\tNhap thong tin san pham thu: " << i + 1 << endl;
        s[i].nhap();
    }
    cout << "\n\n\t\tSan pham sap xep theo ten" << endl;
    for (int i = 0; i < n; i++)
    {
        s[i].sapxep(s, n);
        s[i].xuat();
    }
    cout << "\n\n\t\tSan pham co so luong lon nhat la: " << endl;
    max(s, n);
    for (int i = 0; i < n; i++)
    {
        s[i].find(s, n);
    }
    return 0;
}

Cậu có thể mô tả rõ hơn vấn đề của cậu được không?
Nhìn qua thì hàm find của cậu được implement đúng rồi, cùng với việc cậu mô tả lủng củng nên tớ không hiểu được ý cậu @@

3 Likes

Ý chủ thớt là chỉ muốn tìm 1 lần thôi. Nhưng khi nhập 2 sản phẩm thì nó lại chạy hàm find 2 lần, có 3 sản phẩm thì code lại chạy hàm find 3 lần ấy :stuck_out_tongue:

Trong đoạn code này bạn có thể cho biết tại sao max lại là friend function trong khi các hàm sapxep, find lại là member function không? Và theo bạn thì nên dùng member function hay friend function trong trường hợp này?
Lỗi cơ bản ở đây là lỗi thiết kế class, dẫn tới cách dùng lung tung cả lên mà thôi.

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