#include #include #include #define MAX_NAME_LEN 101 #define LIST_SIZE 1000 struct pizza { char name[MAX_NAME_LEN]; float price; }; int read_item(struct pizza* item) { char buffer[256]; if (fgets(buffer, sizeof(buffer), stdin) == NULL)// назва return 0; buffer[strcspn(buffer, "\n")] = '\0'; // забір пропусків if (strlen(buffer) == 0) return 0; strncpy(item->name, buffer, MAX_NAME_LEN); item->name[MAX_NAME_LEN - 1] = '\0'; if (fgets(buffer, sizeof(buffer), stdin) == NULL)// ціна return 0; buffer[strcspn(buffer, "\n")] = '\0'; char* endptr; item->price = strtof(buffer, &endptr); while (*endptr == ' ') endptr++; if (*endptr != '\0') return 0; // некоректне число return 1;} int read_pizza_list(struct pizza* list) { int counter = 0; for (int i = 0; i < LIST_SIZE; i++) { struct pizza item; memset(&item, 0, sizeof(struct pizza)); int r = read_item(&item); if (r) { memcpy(&list[i], &item, sizeof(struct pizza)); counter += 1; } else { break; } } return counter;} int compare_pizza(const void* a, const void* b) { const struct pizza* p1 = (const struct pizza*)a; const struct pizza* p2 = (const struct pizza*)b; if (p1->price < p2->price) return -1; if (p1->price > p2->price) return 1; return strcmp(p1->name, p2->name);} int main() { struct pizza list[LIST_SIZE]; memset(list, 0, LIST_SIZE * sizeof(struct pizza)); int count = read_pizza_list(list); qsort(list, count, sizeof(struct pizza), compare_pizza); for (int i = 0; i < count; i++) { printf("%s\n%.6f\n", list[i].name, list[i].price);} return 0;}