usaa24/cv1/program.c

112 lines
3.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <string.h>
#include <stdio.h>
#include <ctype.h>
void replace(char* DishName);
void normalize(char* str);
struct MenuItem {
char dish[50]; // Тільки назва страви
float price; // Ціна страви
};
char answer1[100];
int main(void) {
// Динамічне зчитування меню
struct MenuItem menu[100];
int MenuSize = 0;
char line[100];
printf("Zadajte položky menu (формат: Назва, Ціна). Введіть 'end' для завершення вводу.\n");
while (1) {
printf("Введіть меню: ");
fgets(line, 100, stdin);
if (strcmp(line, "end\n") == 0) break; // При введенні "end" завершити зчитування
// Парсинг введеної інформації
if (sscanf(line, "%[^,], %f", menu[MenuSize].dish, &menu[MenuSize].price) == 2) {
MenuSize++; // Збільшити розмір тільки якщо зчитано правильно
} else {
printf("Невірний формат. Будь ласка, введіть у форматі: Назва, Ціна\n");
}
}
// Виведення кількості зчитаних позицій
printf("Успішно зчитано %d позицій меню.\n", MenuSize);
// Введення пошукового запиту
printf("Zadajte hladanu surovinu: ");
fgets(answer1, 100, stdin);
// Видалення символа нового рядка
if (answer1[strlen(answer1) - 1] == '\n') {
answer1[strlen(answer1) - 1] = '\0';
}
// Нормалізація пошукового запиту
normalize(answer1);
int found = 0;
for (size_t i = 0; i < MenuSize; i++) {
// Копія назви страви для нормалізації
char normalized_dish[50];
strcpy(normalized_dish, menu[i].dish);
// Нормалізуємо для порівняння
normalize(normalized_dish);
// Пошук інгредієнта у назві страви
if (strstr(normalized_dish, answer1) != NULL) {
found = 1;
// Копія назви страви для "хакерської" заміни
char hacker_dish[50];
strcpy(hacker_dish, menu[i].dish);
// Заміна символів на стиль "хакер"
replace(hacker_dish);
// Виведення результату
printf("Nájdené: %s, Cena: %.2f\n", hacker_dish, menu[i].price);
}
}
if (!found) {
printf("Zadana surovina nebola najdena.\n");
}
return 0;
}
// Функція заміни "Hacker Script" символів на цифри
void replace(char* DishName) {
// Масиви символів для заміни
char original[] = "aAeEiIoOsSzZ";
char replacement[] = "443311005522";
int l = strlen(DishName);
// Заміна літер на цифри
for (int i = 0; i < l; i++) {
for (int j = 0; j < strlen(original); j++) {
if (DishName[i] == original[j]) {
DishName[i] = replacement[j];
break;
}
}
}
}
// Нормалізація рядка для пошуку (перетворює на малі літери і замінює символи)
void normalize(char* str) {
int l = strlen(str);
for (int i = 0; i < l; i++) {
str[i] = tolower(str[i]); // Заміна великих літер на малі
replace(&str[i]); // Заміна символів на цифри для порівняння
}
}