From 1466ae56465dbe16e2e87d22ddf770b27489cb86 Mon Sep 17 00:00:00 2001 From: Mykola Syniavskyi Date: Thu, 9 Oct 2025 23:23:13 +0000 Subject: [PATCH] Aktualizovat du2/program.c --- du2/program.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/du2/program.c b/du2/program.c index e69de29..564119a 100644 --- a/du2/program.c +++ b/du2/program.c @@ -0,0 +1,72 @@ +#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;} \ No newline at end of file