usaa24/cv2/program.c

71 lines
2.4 KiB
C
Raw 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 <string.h>
#include <stdlib.h>
#define MAX_LENGTH 100
#define MAX_DISHES 100
char dish_name[MAX_DISHES][MAX_LENGTH];
double dish_price[MAX_DISHES];
int main() {
int count = 0;
while (count < MAX_DISHES) {
char dish[MAX_LENGTH];
char price[MAX_LENGTH];
// Читаем название блюда
if (fgets(dish, MAX_LENGTH, stdin) == NULL) {
break; // Если чтение не удалось, выходим из цикла
}
dish[strcspn(dish, "\n")] = 0; // Убираем символ новой строки
// Проверяем на пустую строку
if (strlen(dish) == 0) {
break; // Выход из цикла при пустой строке
}
strcpy(dish_name[count], dish); // Сохраняем название блюда
// Читаем цену блюда
if (fgets(price, MAX_LENGTH, stdin) == NULL) {
break; // Если чтение не удалось, выходим из цикла
}
price[strcspn(price, "\n")] = 0; // Убираем символ новой строки
// Проверяем на пустую строку
if (strlen(price) == 0) {
break; // Выход из цикла при пустой строке
}
// Преобразуем цену в число с плавающей запятой
dish_price[count] = atof(price);
count++;
}
// Сортируем блюда по цене
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (dish_price[j] > dish_price[j + 1]) {
// Меняем местами цены
double temp_price = dish_price[j];
dish_price[j] = dish_price[j + 1];
dish_price[j + 1] = temp_price;
// Меняем местами названия
char temp_name[MAX_LENGTH];
strcpy(temp_name, dish_name[j]);
strcpy(dish_name[j], dish_name[j + 1]);
strcpy(dish_name[j + 1], temp_name);
}
}
}
// Выводим отсортированные блюда и их цены
for (int i = 0; i < count; i++) {
printf("%s\n%.6f\n", dish_name[i], dish_price[i]);
}
return 0;
}