56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
#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;
|
||
} |