🎾Практика. Компаратор

#include <iostream>
#include <string.h>

using namespace std;

struct Book
{
    char name[40];
    int price;
    int rank;
};

bool compare_books_by_name(Book a, Book b)
{
    return strcmp(a.name, b.name);
}

bool compare_books_by_price(Book a, Book b)
{
    return a.price > b.price;
}

bool compare_books_by_rank(Book a, Book b)
{
    return a.rank < b.rank;
}

void bubbleSortBook(struct Book list[], int listLength, bool(*foo)(struct Book a, Book b))
{
    while(listLength--)
    {
        bool swapped = false;

        for(int i = 0; i < listLength; i++)
        {
            if(foo(list[i] , list[i + 1]))
            {
                swap(list[i], list[i + 1]);
                swapped = true;
            }
        }

        if(swapped == false)
            break;
    }
}



int main()
{
    Book books[] = {{"qwe", 700, 3}, {"zxc", 300, 5} , {"asd", 3245, 7}};
    int amount = 3;
    bubbleSortBook(books,  3, compare_books_by_rank);

    for(int i = 0; i < amount; i++)
        printf_s("%s %d %d\n ", books[i].name, books[i].price, books[i].rank);

    return 0;
}

Last updated