#include #include #include #include #define MAX_PIZZAS 100 #define MAX_NAME_LENGTH 101 typedef struct { char name[MAX_NAME_LENGTH]; double price; } Pizza; int compare(const void *a, const void *b) { const Pizza *pizzaA = (const Pizza *)a; const Pizza *pizzaB = (const Pizza *)b; if (pizzaA->price != pizzaB->price) { return (pizzaA->price < pizzaB->price) ? -1 : 1; } return strcasecmp(pizzaA->name, pizzaB->name); } int readPizza(Pizza *pizza) { if (!fgets(pizza->name, sizeof(pizza->name), stdin)) return 0; pizza->name[strcspn(pizza->name, "\n")] = 0; char priceStr[10]; if (!fgets(priceStr, sizeof(priceStr), stdin)) return 0; priceStr[strcspn(priceStr, "\n")] = 0; char *endptr; pizza->price = strtod(priceStr, &endptr); return *endptr == '\0'; } int main() { Pizza menu[MAX_PIZZAS]; int count = 0; while (count < MAX_PIZZAS) { if (!readPizza(&menu[count])) break; count++; } qsort(menu, count, sizeof(Pizza), compare); for (int i = 0; i < count; i++) { printf("%s\n%.6f\n", menu[i].name, menu[i].price); } return 0; }