56 lines
1.6 KiB
Plaintext
56 lines
1.6 KiB
Plaintext
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <string.h>
|
|||
|
|
|||
|
#define MAX_NAME_LENGTH 101
|
|||
|
#define MAX_ITEMS 100
|
|||
|
|
|||
|
typedef struct {
|
|||
|
char name[MAX_NAME_LENGTH];
|
|||
|
double price;
|
|||
|
} Pizza;
|
|||
|
|
|||
|
// Функція для порівняння піц за ціною і назвою
|
|||
|
int compare(const void *a, const void *b) {
|
|||
|
Pizza *pizzaA = (Pizza *)a;
|
|||
|
Pizza *pizzaB = (Pizza *)b;
|
|||
|
|
|||
|
if (pizzaA->price != pizzaB->price) {
|
|||
|
return (pizzaA->price > pizzaB->price) - (pizzaA->price < pizzaB->price);
|
|||
|
}
|
|||
|
return strcmp(pizzaA->name, pizzaB->name);
|
|||
|
}
|
|||
|
|
|||
|
int main() {
|
|||
|
Pizza menu[MAX_ITEMS];
|
|||
|
int count = 0;
|
|||
|
|
|||
|
// Введення назви і ціни
|
|||
|
while (1) {
|
|||
|
Pizza pizza;
|
|||
|
|
|||
|
// Читання назви піци
|
|||
|
if (!fgets(pizza.name, MAX_NAME_LENGTH, stdin)) break;
|
|||
|
pizza.name[strcspn(pizza.name, "\n")] = '\0'; // Видалення нового рядка
|
|||
|
|
|||
|
// Читання ціни піци
|
|||
|
if (scanf("%lf", &pizza.price) != 1) break;
|
|||
|
getchar(); // Споживання залишку нового рядка після ціни
|
|||
|
|
|||
|
// Додавання піци до масиву
|
|||
|
menu[count++] = pizza;
|
|||
|
|
|||
|
// Перевірка на межі масиву
|
|||
|
if (count >= MAX_ITEMS) break;
|
|||
|
}
|
|||
|
|
|||
|
// Сортування піц за ціною і назвою
|
|||
|
qsort(menu, count, sizeof(Pizza), compare);
|
|||
|
|
|||
|
// Виведення відсортованого меню
|
|||
|
for (int i = 0; i < count; i++) {
|
|||
|
printf("%s\n%.6f\n", menu[i].name, menu[i].price);
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|