Update cv2/program.c
This commit is contained in:
		
							parent
							
								
									d033d0e4ca
								
							
						
					
					
						commit
						86869ba7fd
					
				| @ -5,67 +5,76 @@ | |||||||
| #define LINE_SIZE 100 | #define LINE_SIZE 100 | ||||||
| #define LIST_SIZE 100 | #define LIST_SIZE 100 | ||||||
| 
 | 
 | ||||||
|  | // Структура для пиццы
 | ||||||
| struct pizza { | struct pizza { | ||||||
|     char name[LINE_SIZE]; |     char name[LINE_SIZE]; // Название пиццы
 | ||||||
|     float price; |     float price; // Цена пиццы
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | // Функция для чтения одного элемента пиццы
 | ||||||
| int read_item(struct pizza *item) { | int read_item(struct pizza *item) { | ||||||
|      |     // Чтение названия пиццы
 | ||||||
|     if (fgets(item->name, LINE_SIZE, stdin) == NULL || item->name[0] == '\n') { |     if (fgets(item->name, LINE_SIZE, stdin) == NULL || item->name[0] == '\n') { | ||||||
|         return 0;  |         return 0;  | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     // Удаление символа новой строки
 | ||||||
|     item->name[strcspn(item->name, "\n")] = 0; |     item->name[strcspn(item->name, "\n")] = 0; | ||||||
| 
 | 
 | ||||||
|     |     // Чтение цены пиццы
 | ||||||
|     if (scanf("%f", &item->price) != 1 || item->price <= 0) { |     if (scanf("%f", &item->price) != 1 || item->price <= 0) { | ||||||
|          |  | ||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     // Очистка буфера ввода
 | ||||||
|     while (getchar() != '\n'); |     while (getchar() != '\n'); | ||||||
| 
 | 
 | ||||||
|     return 1;  |     return 1;  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Функция для сравнения двух пицц
 | ||||||
| int compare_pizza(const void *a, const void *b) { | int compare_pizza(const void *a, const void *b) { | ||||||
|     struct pizza *pizza_a = (struct pizza *)a; |     struct pizza *pizza_a = (struct pizza *)a; | ||||||
|     struct pizza *pizza_b = (struct pizza *)b; |     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; | ||||||
|     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);  |     return strcmp(pizza_a->name, pizza_b->name);  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Функция для чтения списка пицц
 | ||||||
| int read_pizza_list(struct pizza *list) { | int read_pizza_list(struct pizza *list) { | ||||||
|     int count = 0; |     int count = 0; | ||||||
|     while (count < LIST_SIZE) { |     while (count < LIST_SIZE) { | ||||||
|         struct pizza item; |         struct pizza item; | ||||||
|         memset(&item, 0, sizeof(struct pizza)); |         memset(&item, 0, sizeof(struct pizza)); // Обнуляем структуру
 | ||||||
|         if (read_item(&item)) { |         if (read_item(&item)) { | ||||||
|             list[count++] = item;  |             list[count++] = item; // Добавляем элемент в список
 | ||||||
|         } else { |         } else { | ||||||
|             break;  |             break; // Завершаем, если не удалось прочитать элемент
 | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return count;  |     return count;  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Функция для вывода списка пицц
 | ||||||
| void print_pizza_list(struct pizza *list, int count) { | void print_pizza_list(struct pizza *list, int count) { | ||||||
|     for (int i = 0; i < count; i++) { |     for (int i = 0; i < count; i++) { | ||||||
|         printf("%s\n%.6f\n", list[i].name, list[i].price); |         printf("%s\n%.6f\n", list[i].name, list[i].price); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Главная функция
 | ||||||
| int main() { | int main() { | ||||||
|     struct pizza list[LIST_SIZE]; |     struct pizza list[LIST_SIZE]; | ||||||
|     memset(list, 0, sizeof(list));  |     memset(list, 0, sizeof(list)); // Обнуляем список
 | ||||||
| 
 | 
 | ||||||
|     int count = read_pizza_list(list);  |     int count = read_pizza_list(list); // Читаем список пицц
 | ||||||
|     qsort(list, count, sizeof(struct pizza), compare_pizza);  |     qsort(list, count, sizeof(struct pizza), compare_pizza); // Сортируем список
 | ||||||
| 
 | 
 | ||||||
|     print_pizza_list(list, count);  |     print_pizza_list(list, count); // Выводим отсортированный список
 | ||||||
| 
 | 
 | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user