#include #include #include #define LIST_SIZE 100 struct listok { char nazov[101]; float cena; }; int add_listok(struct listok *p, int *n) { if (fgets(p[*n].nazov, 101, stdin) == NULL) { return 0; } p[*n].nazov[strcspn(p[*n].nazov, "\n")] = 0; if (scanf("%f", &p[*n].cena) != 1) { return 0; } getchar(); *n = *n + 1; return 1; } int compare(struct listok *a, struct listok *b) { if (a->cena > b->cena) { return 1; } if (a->cena < b->cena) { return -1; } return strcmp(a->nazov, b->nazov); } void sort_listok(struct listok *p, int n) { for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (compare(&p[i], &p[j]) > 0) { struct listok tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } } } void print_listok(struct listok *p, int n) { for (int i = 0; i < n; i++) { printf("%s\n", p[i].nazov); printf("%f\n", p[i].cena); } } int main() { struct listok p[LIST_SIZE]; int n = 0; while (add_listok(p, &n)) { } sort_listok(p, n); print_listok(p, n); return 0; }