#include #include #include #include #define LINESIZE 100 #define MAX_PIZZAS 100 struct pizza { float prize; char name[LINESIZE]; }; char hacker_script(char c) { // Перетворення відповідно до "Hack3r scr1pt" switch (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 'd': return '6'; case 't': return '7'; case 'b': return '8'; case 'q': return '9'; default: return tolower(c); // Зробити маленьким } } void normalize(char *input, char *output) { for (int i = 0; input[i] != '\0'; i++) { output[i] = hacker_script(input[i]); } output[strlen(input)] = '\0'; // Завершити рядок } int read_pizza(struct pizza *item) { char line[LINESIZE]; if (fgets(line, sizeof(line), stdin) == NULL) return 0; // Зчитування назви strcpy(item->name, line); // Зчитування ціни if (fgets(line, sizeof(line), stdin) == NULL) return 0; // Перетворення рядка на float item->prize = strtof(line, NULL); if (item->prize == 0.0F) return 0; // Перевірка на успішність return 1; // Успішно зчитано } int search_string(const char *haystack, const char *needle) { for (int i = 0; haystack[i] != '\0'; i++) { int j; for (j = 0; needle[j] != '\0' && haystack[i + j] == needle[j]; j++); if (needle[j] == '\0') return i; // Знайдено } return -1; // Не знайдено } int main() { char search[LINESIZE]; struct pizza menu[MAX_PIZZAS]; char normalized_search[LINESIZE]; int count = 0; printf("Zadaj hladanu surovinu:\n"); fgets(search, sizeof(search), stdin); search[strcspn(search, "\n")] = 0; // Прибрати символ нового рядка // Нормалізація пошукового рядка normalize(search, normalized_search); printf("Zadaj jedalny listok:\n"); while (read_pizza(&menu[count]) && count < MAX_PIZZAS) { count++; } // Пошук і вивід результатів printf("Znalezené jedlá:\n"); for (int i = 0; i < count; i++) { char normalized_name[LINESIZE]; normalize(menu[i].name, normalized_name); if (search_string(normalized_name, normalized_search) != -1) { printf("%s%.2f\n", menu[i].name, menu[i].prize); } } printf("Nacitanych %d poloziek.\n", count); return 0; }