#include #include #include #define LIST_SIZE 100 #define LINE_SIZE 101 struct pizza { char name[101]; float prize; }; int read_pizza_list(struct pizza* list) { int counter = 0; char line[200]; for (int i=0; i < LIST_SIZE; i++) { struct pizza item; memset(&item,0,sizeof(struct pizza)); if (fgets(line, sizeof(line), stdin)==NULL) { break; } if (sscanf(line, "%[^\n]", item.name) !=1) { break; } if (fgets(line, sizeof(line), stdin)==NULL) { break; } if (sscanf(line, "%f", &item.prize) !=1) { break; } memcpy(&list[i], &item,sizeof(struct pizza)); counter +=1; } return counter; } int compare (const void* a, const void* b) { struct pizza* pizza_a = (struct pizza*)a; struct pizza* pizza_b = (struct pizza*)b; int result; if (pizza_a->prize < pizza_b->prize) { result=-1; } else if (pizza_a->prize > pizza_b->prize) { result=1; } else { result = strcmp(pizza_a->name, pizza_b->name); } return result; } int main() { struct pizza list[LIST_SIZE]; int kolichestvo = read_pizza_list(list); qsort(list, kolichestvo, sizeof(struct pizza), compare); for (int i=0;i