usaa24/cv1/program.c

83 lines
2.5 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 <stdio.h>
#include <string.h>
#include <ctype.h>
// Функція для порівняння символів за правилами Hack3r scr1pt
int isHack3rEquivalent(char c1, char c2) {
char table[256] = {0};
table['0'] = 'o'; table['o'] = '0';
table['1'] = 'i'; table['i'] = '1';
table['2'] = 'z'; table['z'] = '2';
table['3'] = 'e'; table['e'] = '3';
table['4'] = 'a'; table['a'] = '4';
table['5'] = 's'; table['s'] = '5';
table['6'] = 'b'; table['b'] = '6';
table['7'] = 't'; table['t'] = '7';
table['8'] = 'b'; table['b'] = '8';
table['9'] = 'q'; table['q'] = '9';
c1 = tolower(c1);
c2 = tolower(c2);
if (c1 == c2) return 1;
return table[(unsigned char)c1] == c2;
}
// Функція для перевірки наявності ключового слова в назві
int isHack3rMatch(const char *name, const char *search) {
int name_len = strlen(name);
int search_len = strlen(search);
for (int i = 0; i <= name_len - search_len; i++) {
int match = 1;
for (int j = 0; j < search_len; j++) {
if (!isHack3rEquivalent(name[i + j], search[j])) {
match = 0;
break;
}
}
if (match) return 1;
}
return 0;
}
int main()
{
char line[200];
char name[100];
char price[20];
int count = 0;
printf("Zadaj hladanu surovinu:\n");
fgets(name, sizeof(name), stdin);
name[strcspn(name, "\n")] = 0; // Видаляємо символ нового рядка
printf("Zadaj jedalny listok:\n");
// Зчитуємо рядки, поки є вхідні дані
while (fgets(line, sizeof(line), stdin) != NULL) {
line[strcspn(line, "\n")] = 0; // Видаляємо символ нового рядка
// Якщо рядок порожній, зупиняємо цикл
if (strcmp(line, "") == 0) {
break;
}
// Зчитуємо наступний рядок, що містить ціну
if (fgets(price, sizeof(price), stdin) == NULL) {
break; // Якщо більше немає рядків, виходимо
}
price[strcspn(price, "\n")] = 0; // Видаляємо символ нового рядка
// Якщо знайдено збіг, виводимо назву і ціну
if (isHack3rMatch(line, name)) {
printf("%s\n%s\n", line, price);
}
count++;
}
printf("Nacitanych %d poloziek.\n", count);
return 0;
}