From 86869ba7fdc739f9426f76fe68c559e2514fc253 Mon Sep 17 00:00:00 2001 From: Marat Izmailov Date: Mon, 21 Oct 2024 11:41:19 +0000 Subject: [PATCH] Update cv2/program.c --- cv2/program.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/cv2/program.c b/cv2/program.c index 11dce7c..57df4c9 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -5,67 +5,76 @@ #define LINE_SIZE 100 #define LIST_SIZE 100 +// Структура для пиццы struct pizza { - char name[LINE_SIZE]; - float price; + char name[LINE_SIZE]; // Название пиццы + float price; // Цена пиццы }; +// Функция для чтения одного элемента пиццы int read_item(struct pizza *item) { - + // Чтение названия пиццы if (fgets(item->name, LINE_SIZE, stdin) == NULL || item->name[0] == '\n') { return 0; } + // Удаление символа новой строки item->name[strcspn(item->name, "\n")] = 0; - + // Чтение цены пиццы if (scanf("%f", &item->price) != 1 || item->price <= 0) { - return 0; } + // Очистка буфера ввода while (getchar() != '\n'); return 1; } +// Функция для сравнения двух пицц int compare_pizza(const void *a, const void *b) { struct pizza *pizza_a = (struct pizza *)a; struct pizza *pizza_b = (struct pizza *)b; + // Сравнение по цене if (pizza_a->price < pizza_b->price) return -1; if (pizza_a->price > pizza_b->price) return 1; + // Если цены равны, сравниваем по названию return strcmp(pizza_a->name, pizza_b->name); } +// Функция для чтения списка пицц int read_pizza_list(struct pizza *list) { int count = 0; while (count < LIST_SIZE) { struct pizza item; - memset(&item, 0, sizeof(struct pizza)); + memset(&item, 0, sizeof(struct pizza)); // Обнуляем структуру if (read_item(&item)) { - list[count++] = item; + list[count++] = item; // Добавляем элемент в список } else { - break; + break; // Завершаем, если не удалось прочитать элемент } } return count; } +// Функция для вывода списка пицц void print_pizza_list(struct pizza *list, int count) { for (int i = 0; i < count; i++) { printf("%s\n%.6f\n", list[i].name, list[i].price); } } +// Главная функция int main() { struct pizza list[LIST_SIZE]; - memset(list, 0, sizeof(list)); + memset(list, 0, sizeof(list)); // Обнуляем список - int count = read_pizza_list(list); - qsort(list, count, sizeof(struct pizza), compare_pizza); + int count = read_pizza_list(list); // Читаем список пицц + qsort(list, count, sizeof(struct pizza), compare_pizza); // Сортируем список - print_pizza_list(list, count); + print_pizza_list(list, count); // Выводим отсортированный список return 0; }