From a19ffdbaf2efa7f70d1f0de562456057052143e5 Mon Sep 17 00:00:00 2001 From: mr314ot Date: Tue, 7 Oct 2025 11:39:45 +0200 Subject: [PATCH] du2 - 2 --- du2/program.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/du2/program.c b/du2/program.c index 2b59e54..b7d91c0 100644 --- a/du2/program.c +++ b/du2/program.c @@ -11,19 +11,59 @@ struct pizza { float price; }; +//funkcia na nacitanie jednej polozky int read_pizza(struct pizza *item) { char line1[LINESIZE]; char line2[LINESIZE]; + //nazov if (!fgets(line1, LINESIZE, stdin)) return 0; line1[strcspn(line1, "\n")] = 0; + if (strlen(line1) == 0) return 0; + + //cena + if (!fgets(line2, LINESIZE, stdin)) return 0; + line2[strcspn(line2, "\n")] = 0; float value; - if (sscanf(line2, "%f", &value) != 1 + if (sscanf(line2, "%f", &value) != 1 || value == 0.0f) { + return 0; + } + + strcpy(item->name, line1); + item->prize = value; + return 1; +} + +//porovnanie pre qsort +int compare_pizza(const void *a, const void *b){ + const struct pizza *pa = (const struct pizza *)a; + const struct pizza *pb = (const struct pizza *)b; + + if (pa->prize < pb->prize) return -1; + if (pa->prize > pb->prize) return 1; + + return strcmp(pa->name, pb->name); } int main() { + struct pizza list[MAXITEMS]; + int count = 0; + + //nacitanie listka + while (count < MAXITEMS && read_pizza(&list[count])){ + count++; + } - return 0; + //triedenie + qsort(list, count, sizeof(struct pizza), compare_pizza); + + //vypis listka + for (int i = 0; i < count; i++){ + printf("%s\n", list[i].name); + printf("%s\n", list[i].prize); + } + + return 0; }