#include #include #include #include #define LINESIZE 100 #define MENU_SIZE 100 struct pizza { char name[LINESIZE]; float price; }; char hacker_script(char l) { switch (tolower(l)) { 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(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); 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)) { printf("Error reading input.\n"); 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++; } } if (found_count == 0) { printf("\n"); } printf("Nacitanych %d poloziek.\n", count); return 0; }