#include #include #include #define LINESIZE 100 struct MenuItem { char dish[LINESIZE]; float price; }; // Функція для нормалізації рядка за правилами "Hacker Script" void normalize(char* str) { for (int i = 0; str[i]; i++) { // Замінюємо великі літери на маленькі str[i] = tolower(str[i]); // Заміна символів відповідно до "Hacker Script" switch (str[i]) { case 'o': str[i] = '0'; break; case 'i': str[i] = '1'; break; case 'z': str[i] = '2'; break; case 'e': str[i] = '3'; break; case 'a': str[i] = '4'; break; case 's': str[i] = '5'; break; case 'b': str[i] = '6'; break; // Залишаємо 'b' на 6 case 't': str[i] = '7'; break; case 'g': str[i] = '9'; break; // Додаємо 'g' на 9 case 'q': str[i] = '9'; break; // Додаємо 'q' на 9 default: break; // нічого не робимо для інших символів } } } // Функція для зчитування страви int read_menu_item(struct MenuItem* item) { // Зчитуємо назву страви if (fgets(item->dish, LINESIZE, stdin) == NULL) { return 0; // Якщо зчитування не вдалося } // Перевіряємо, чи введено "end" if (strcmp(item->dish, "end\n") == 0) { return 0; // Якщо введено "end", виходимо } item->dish[strcspn(item->dish, "\n")] = 0; // видаляємо символ нового рядка // Зчитуємо ціну if (scanf("%f", &item->price) != 1) { getchar(); // очищуємо буфер вводу return 0; // Якщо зчитування не вдалося } getchar(); // очищуємо буфер вводу return 1; // Успішне зчитування } int main(void) { struct MenuItem menu[LINESIZE]; int item_count = 0; char search_string[LINESIZE]; printf("Zadaj hladanu surovinu: "); fgets(search_string, LINESIZE, stdin); search_string[strcspn(search_string, "\n")] = 0; // видаляємо символ нового рядка // Нормалізуємо рядок для пошуку normalize(search_string); printf("Zadaj jedalny listok:\n"); while (item_count < LINESIZE) { // Додаємо перевірку на розмір struct MenuItem item; if (!read_menu_item(&item)) { break; // Виходимо з циклу при некоректному зчитуванні або "end" } // Нормалізуємо назву страви normalize(item.dish); menu[item_count++] = item; // Додаємо страву в меню } // Пошук і вивід знайдених страв int found = 0; for (int i = 0; i < item_count; i++) { if (strstr(menu[i].dish, search_string) != NULL) { printf("%s\n%.2f\n", menu[i].dish, menu[i].price); found = 1; } } if (!found) { printf("Zadana surovina nebola najdena.\n"); } printf("Nacitanych %d poloziek.\n", item_count); return 0; }