usaa24/cv1/program.c

77 lines
2.3 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 search[100];
char name[100];
char price[20];
int count = 0;
printf("Zadaj hladanu surovinu:\n");
fgets(search, sizeof(search), stdin);
search[strcspn(search, "\n")] = 0; // видаляємо символ нового рядка
printf("Zadaj jedalny listok:\n");
while (fgets(name, sizeof(name), stdin)) {
// Якщо не вдається зчитати ціну або назву, зупиняємо програму
if (fgets(price, sizeof(price), stdin) == NULL || strlen(name) == 0) {
printf("Chyba pri nacitani.\n");
break;
}
// видаляємо символи нового рядка
name[strcspn(name, "\n")] = 0;
price[strcspn(price, "\n")] = 0;
// Перевіряємо наявність шуканого рядка
if (isHack3rMatch(name, search)) {
printf("%s\n%s\n", name, price);
}
count++;
}
printf("Nacitanych %d poloziek.\n", count);
return 0;
}