#include #include #include #define LINESIZE 200 #define MAXITEMS 100 // struktura pre polozku jed. listka struct pizza { char name[LINESIZE]; float price; }; //funkcia na nacitanie jednej polozky int read_pizza(struct pizza *item) { char line1[LINESIZE]; char line2[LINESIZE]; //nazov if (fgets(line1, sizeof(line1), stdin) == NULL) { return 0; } line1[strcspn(line1, "\n")] = '\0'; if (line1[0] == '\0') { return 0; } //cena if (fgets(line2, sizeof(line2), stdin) == NULL) { return 0; } line2[strcspn(line2, "\n")] = '\0'; float value; if (sscanf(line2, "%f", &value) != 1) { return 0; } strcpy(item->name, line1); item->price = 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->price < pb->price) return -1; if (pa->price > pb->price) 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++; } //ukoncit ak ziadne polozky if (count == 0) { 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].price); } return 0; }