#include #include #include #include #define LINESIZE 100 #define MENU_SIZE 100 struct pizza { char name[LINESIZE]; float price; }; char hacker_script(char l) { switch (l) { case '0': return 'o'; case '1': return 'i'; case '2': return 'z'; case '3': return 'e'; case '4': return 'a'; case '5': return 's'; case '6': return 'b'; case '7': return 't'; case '8': return 'b'; case '9': return 'q'; default: return l; } } void transform_to_hacker_script(const char *src, char *dest) { while (*src) { *dest++ = hacker_script(*src++); } *dest = '\0'; } int contains_normalized(const char *name, const char *search) { char transformed_name[LINESIZE], transformed_search[LINESIZE]; transform_to_hacker_script(name, transformed_name); transform_to_hacker_script(search, transformed_search); for (int i = 0; transformed_name[i]; i++) { transformed_name[i] = tolower(transformed_name[i]); } for (int i = 0; transformed_search[i]; i++) { transformed_search[i] = tolower(transformed_search[i]); } return strstr(transformed_name, transformed_search) != NULL; } int read_pizza(struct pizza *item) { char line[LINESIZE]; if (!fgets(item->name, LINESIZE, stdin)) { return 0; } item->name[strcspn(item->name, "\n")] = '\0'; if (!fgets(line, LINESIZE, stdin)) { return 0; } item->price = strtof(line, NULL); return 1; } int main() { struct pizza menu[MENU_SIZE]; char search[LINESIZE]; int count = 0; printf("Zadaj hladanu surovinu:\n"); if (!fgets(search, LINESIZE, stdin)) { return 1; } search[strcspn(search, "\n")] = '\0'; printf("Zadaj jedalny listok:\n"); while (count < MENU_SIZE && read_pizza(&menu[count])) { count++; } int found_count = 0; for (int i = 0; i < count; i++) { if (contains_normalized(menu[i].name, search)) { printf("%s\n%.2f\n", menu[i].name, menu[i].price); found_count++; } } printf("Nacitanych %d poloziek.\n", count); return 0; }