usaa24/cv2/program.c

56 lines
1.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}