#include #include #include #define MAX_NAME_LENGTH 100 #define MAX_ITEMS 100 typedef struct { char name[MAX_NAME_LENGTH]; float price; } Pizza; int compare(const void *a, const void *b) { Pizza *pizzaA = (Pizza *)a; Pizza *pizzaB = (Pizza *)b; if (pizzaA->price != pizzaB->price) { return (pizzaA->price > pizzaB->price) - (pizzaA->price < pizzaB->price); } return strcasecmp(pizzaA->name, pizzaB->name); } int read_pizza_list(Pizza *menu) { int count = 0; char input[MAX_NAME_LENGTH]; // Nacitame pizza while (count < MAX_ITEMS && fgets(input, sizeof(input), stdin)) { input[strcspn(input, "\n")] = 0; // Odstran znak noveho riadku // Nacitame cenu pizze char price_str[10]; if (fgets(price_str, sizeof(price_str), stdin) == NULL) { break; } float price = atof(price_str); if (price <= 0) { break; } strncpy(menu[count].name, input, MAX_NAME_LENGTH - 1); menu[count].price = price; count++; } return count; } int main() { Pizza menu[MAX_ITEMS]; int item_count = read_pizza_list(menu); qsort(menu, item_count, sizeof(Pizza), compare); for (int i = 0; i < item_count; i++) { printf("%s\n%.6f\n", menu[i].name, menu[i].price); } return 0; }