#include #include #include void replace(char* DishName); void normalize(char* str); struct MenuItem { char dish[50]; // Тільки назва страви float price; // Ціна страви }; char answer1[100]; int main(void) { // Динамічне зчитування меню struct MenuItem menu[100]; int MenuSize = 0; char line[100]; printf("Zadajte položky menu (формат: Назва, Ціна). Введіть 'end' для завершення вводу.\n"); while (1) { printf("Введіть меню: "); fgets(line, 100, stdin); if (strcmp(line, "end\n") == 0) break; // При введенні "end" завершити зчитування // Парсинг введеної інформації if (sscanf(line, "%[^,], %f", menu[MenuSize].dish, &menu[MenuSize].price) == 2) { MenuSize++; // Збільшити розмір тільки якщо зчитано правильно } else { printf("Невірний формат. Будь ласка, введіть у форматі: Назва, Ціна\n"); } } // Виведення кількості зчитаних позицій printf("Успішно зчитано %d позицій меню.\n", MenuSize); // Введення пошукового запиту printf("Zadajte hladanu surovinu: "); fgets(answer1, 100, stdin); // Видалення символа нового рядка if (answer1[strlen(answer1) - 1] == '\n') { answer1[strlen(answer1) - 1] = '\0'; } // Нормалізація пошукового запиту normalize(answer1); int found = 0; for (size_t i = 0; i < MenuSize; i++) { // Копія назви страви для нормалізації char normalized_dish[50]; strcpy(normalized_dish, menu[i].dish); // Нормалізуємо для порівняння normalize(normalized_dish); // Пошук інгредієнта у назві страви if (strstr(normalized_dish, answer1) != NULL) { found = 1; // Копія назви страви для "хакерської" заміни char hacker_dish[50]; strcpy(hacker_dish, menu[i].dish); // Заміна символів на стиль "хакер" replace(hacker_dish); // Виведення результату printf("Nájdené: %s, Cena: %.2f\n", hacker_dish, menu[i].price); } } if (!found) { printf("Zadana surovina nebola najdena.\n"); } return 0; } // Функція заміни "Hacker Script" символів на цифри void replace(char* DishName) { // Масиви символів для заміни char original[] = "aAeEiIoOsSzZ"; char replacement[] = "443311005522"; int l = strlen(DishName); // Заміна літер на цифри for (int i = 0; i < l; i++) { for (int j = 0; j < strlen(original); j++) { if (DishName[i] == original[j]) { DishName[i] = replacement[j]; break; } } } } // Нормалізація рядка для пошуку (перетворює на малі літери і замінює символи) void normalize(char* str) { int l = strlen(str); for (int i = 0; i < l; i++) { str[i] = tolower(str[i]); // Заміна великих літер на малі replace(&str[i]); // Заміна символів на цифри для порівняння } }