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