#include #include #include #define MAX_ITEMS 100 #define MAX_NAME_LENGTH 100 // Структура для зберігання назви страви і ціни struct MenuItem { char name[MAX_NAME_LENGTH]; float price; }; // Функція для перетворення символу в "Hack3r Script" char to_hacker_script(char c) { switch (tolower(c)) { case 'o': return '0'; case 'i': return '1'; case 'z': return '2'; case 'e': return '3'; case 'a': return '4'; case 's': return '5'; case 'b': return '6'; case 't': return '7'; case 'q': return '9'; default: return tolower(c); // Перетворюємо всі літери на малі } } // Функція для нормалізації рядка (перетворює у "Hack3r Script") void normalize(char* str) { for (int i = 0; str[i]; i++) { str[i] = to_hacker_script(str[i]); } } // Функція для зчитування меню int read_menu(struct MenuItem* menu) { int count = 0; char line[MAX_NAME_LENGTH]; printf("Zadaj jedalny listok (v formate 'nazov jedla, cena'). Pre ukoncenie zadajte 'end'.\n"); while (1) { // Зчитуємо назву страви printf("Vlož položku menu (nazov jedla): "); if (!fgets(line, MAX_NAME_LENGTH, stdin)) break; if (strncmp(line, "end", 3) == 0) break; // Якщо "end", закінчуємо введення line[strcspn(line, "\n")] = '\0'; // Видаляємо символ нового рядка strcpy(menu[count].name, line); // Копіюємо назву страви // Зчитуємо ціну printf("Vlož cenu jedla: "); if (!fgets(line, MAX_NAME_LENGTH, stdin)) break; menu[count].price = strtof(line, NULL); // Конвертуємо рядок у float count++; } return count; } // Функція для пошуку страв за інгредієнтом void search_menu(const struct MenuItem* menu, int menu_size, const char* ingredient) { int found = 0; char normalized_ingredient[MAX_NAME_LENGTH]; // Копія пошукового запиту та його нормалізація strcpy(normalized_ingredient, ingredient); normalize(normalized_ingredient); printf("\nVýsledky hľadania:\n"); for (int i = 0; i < menu_size; i++) { char normalized_dish[MAX_NAME_LENGTH]; strcpy(normalized_dish, menu[i].name); normalize(normalized_dish); // Нормалізуємо назву страви // Якщо знайдено відповідність if (strstr(normalized_dish, normalized_ingredient)) { printf("%s\n%.2f\n", menu[i].name, menu[i].price); found = 1; } } if (!found) { printf("Zadana surovina nebola najdena.\n"); } } int main() { struct MenuItem menu[MAX_ITEMS]; char search_term[MAX_NAME_LENGTH]; int menu_size; // Введення пошукового запиту printf("Zadaj hladanu surovinu: "); fgets(search_term, MAX_NAME_LENGTH, stdin); search_term[strcspn(search_term, "\n")] = '\0'; // Видаляємо символ нового рядка // Зчитування меню menu_size = read_menu(menu); // Пошук страв за інгредієнтом search_menu(menu, menu_size, search_term); // Виведення кількості позицій меню printf("\nNacitanych %d poloziek.\n", menu_size); return 0; }