diff --git a/cv2/program.c b/cv2/program.c index e69de29..96dc047 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -0,0 +1,56 @@ +#include +#include +#include + +#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; +} \ No newline at end of file