#include #include #include #define LINESIZE 100 #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, 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 || value == 0.0f) { 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++; } //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; }