diff --git a/cv1/program.c b/cv1/program.c index 626a404..54fc990 100644 --- a/cv1/program.c +++ b/cv1/program.c @@ -9,7 +9,7 @@ struct MenuItem { float price; }; -// Function to normalize a string according to "Hacker Script" rules +// Функція для нормалізації рядка за правилами "Hacker Script" void normalize(char* str) { for (int i = 0; str[i]; i++) { str[i] = tolower(str[i]); @@ -20,35 +20,34 @@ void normalize(char* str) { 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' mapped to '6' + case 'd': str[i] = '6'; break; // 'b' mapped to '6' case 't': str[i] = '7'; break; - case 'g': str[i] = '9'; break; + case 'b': str[i] = '8'; break; case 'q': str[i] = '9'; break; - // We keep 'r', 'y', 'n', and 'd' unchanged to ensure proper matching - default: break; + default: break; // 'r', 'y', 'n', 'd' залишаються незмінними } } } -// Function to read a menu item +// Функція для зчитування позиції меню int read_menu_item(struct MenuItem* item) { if (fgets(item->dish, LINESIZE, stdin) == NULL) { - return 0; // If reading failed + return 0; // Якщо зчитування не вдалося } if (strcmp(item->dish, "end\n") == 0) { - return 0; // Exit command "end" + return 0; // Команда виходу "end" } - item->dish[strcspn(item->dish, "\n")] = 0; // Remove newline character + item->dish[strcspn(item->dish, "\n")] = 0; // Видалити символ нового рядка if (scanf("%f", &item->price) != 1) { - getchar(); // Clear input buffer - return 0; // If reading failed + getchar(); // Очищення буфера введення + return 0; // Якщо зчитування не вдалося } - getchar(); // Clear input buffer + getchar(); // Очищення буфера введення - return 1; // Successful reading + return 1; // Успішне зчитування } int main(void) { @@ -57,43 +56,40 @@ int main(void) { char search_string[LINESIZE]; - // Prompt for the ingredient to search + // Запит на інгредієнт для пошуку printf("Zadaj hladanu surovinu: "); fgets(search_string, LINESIZE, stdin); - search_string[strcspn(search_string, "\n")] = 0; // Remove newline character + search_string[strcspn(search_string, "\n")] = 0; // Видалити символ нового рядка - // Normalize the search string - normalize(search_string); // Normalize the search string + // Нормалізація рядка пошуку + normalize(search_string); printf("Zadaj jedalny listok:\n"); - // Loop to read menu items + // Цикл для зчитування позицій меню while (item_count < LINESIZE) { struct MenuItem item; if (!read_menu_item(&item)) { - break; // Exit loop on read error or "end" + break; // Вихід з циклу на помилці зчитування або "end" } - // Normalize the dish name + // Нормалізація назви страви normalize(item.dish); - menu[item_count++] = item; // Add item to menu + menu[item_count++] = item; // Додати позицію до меню } - // Search for and print found dishes + // Пошук та вивід знайдених страв int found = 0; for (int i = 0; i < item_count; i++) { - // Perform a direct search for the normalized dish against the normalized search string - if (strstr(menu[i].dish, search_string) != NULL) { // Check if search_string is in dish + // Виконати прямий пошук нормалізованої страви проти нормалізованого рядка пошуку + if (strstr(menu[i].dish, search_string) != NULL) { printf("%s\n%.2f\n", menu[i].dish, menu[i].price); - found = 1; // At least one dish found + found = 1; // Хоча б одна страва знайдена } } - // Print message if search was unsuccessful - if (!found) { - printf("Zadana surovina nebola najdena.\n"); - } - + // Якщо пошук був неуспішним, нічого не виводимо + // Підрахунок зчитаних позицій printf("Nacitanych %d poloziek.\n", item_count); return 0;