diff --git a/du2/program.c b/du2/program.c index e69de29..5a58eaa 100644 --- a/du2/program.c +++ b/du2/program.c @@ -0,0 +1,55 @@ +#include +#include +#include +#include + +#define MAX_PIZZ 1000 +#define MAX_NAZOV 101 + +typedef struct { + char nazov[MAX_NAZOV]; + double cena; +} Pizza; + +int porovnaj(const void *a, const void *b) { + const Pizza *p1 = (const Pizza *)a; + const Pizza *p2 = (const Pizza *)b; + + if (p1->cena < p2->cena) return -1; + if (p1->cena > p2->cena) return 1; + + return strcasecmp(p1->nazov, p2->nazov); +} + +int main() { + Pizza zoznam[MAX_PIZZ]; + int n = 0; + + while (1) { + if (!fgets(zoznam[n].nazov, MAX_NAZOV, stdin)) + break; + + zoznam[n].nazov[strcspn(zoznam[n].nazov, "\n")] = '\0'; + + if (strlen(zoznam[n].nazov) == 0) + break; + + char riadok[50]; + if (!fgets(riadok, sizeof(riadok), stdin)) + break; + + if (sscanf(riadok, "%lf", &zoznam[n].cena) != 1) + break; + + n++; + if (n >= MAX_PIZZ) break; + } + + qsort(zoznam, n, sizeof(Pizza), porovnaj); + + for (int i = 0; i < n; i++) { + printf("%s\n%.6f\n", zoznam[i].nazov, zoznam[i].cena); + } + + return 0; +}