Практика. Компаратор
#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;
}
Previous32. Алгоритмы трехмерной графики. Алгоритм рисования каркасных моделей.NextПрактика. Работа со строками.
Last updated