usaa24/cv1/program.c

86 lines
3.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>
#define MAX_DISHES 100
#define MAX_NAME_LEN 100
// Функция для декодирования символов
void decodovane_slovo(char *text) {
for (int i = 0; text[i]; i++) {
switch (text[i]) {
case '0': text[i] = 'o'; break;
case '1': text[i] = 'i'; break;
case '2': text[i] = 'z'; break;
case '3': text[i] = 'e'; break;
case '4': text[i] = 'a'; break;
case '5': text[i] = 's'; break;
case '6': text[i] = 'b'; break;
case '7': text[i] = 't'; break;
case '8': text[i] = 'b'; break;
case '9': text[i] = 'q'; break;
default: text[i] = tolower(text[i]); break;
}
}
}
int main() {
char ingredient[MAX_NAME_LEN];
char dishes[MAX_DISHES][2][MAX_NAME_LEN]; // Массив для хранения блюд и цен
int count = 0; // Количество введенных блюд
// Запрос ингредиента
printf("Zadaj hladanu surovinu:\n");
scanf("%s", ingredient); // Использование scanf для ввода одной строки без пробелов
// Запрос списка блюд
printf("Zadaj jedalny listok:\n");
while (1) {
char name[MAX_NAME_LEN], price[MAX_NAME_LEN];
if (fgets(name, MAX_NAME_LEN, stdin) == NULL) {
return 0; // Выход, если ввод не удался
}
name[strcspn(name, "\n")] = '\0'; // Удаление символа новой строки
// Если строка пустая, завершить ввод
if (strlen(name) == 0) {
break;
}
if (fgets(price, MAX_NAME_LEN, stdin) == NULL) {
return 0; // Выход, если ввод не удался
}
price[strcspn(price, "\n")] = '\0'; // Удаление символа новой строки
// Сохранение названия блюда и цены
strncpy(dishes[count][0], name, MAX_NAME_LEN - 1);
dishes[count][0][MAX_NAME_LEN - 1] = '\0'; // Завершение строки
strncpy(dishes[count][1], price, MAX_NAME_LEN - 1);
dishes[count][1][MAX_NAME_LEN - 1] = '\0'; // Завершение строки
count++; // Увеличение счётчика блюд
}
// Декодирование введенного ингредиента
decodovane_slovo(ingredient);
// Поиск и вывод блюд, содержащих искомый ингредиент
for (int i = 0; i < count; i++) {
char decoded_name[MAX_NAME_LEN];
strncpy(decoded_name, dishes[i][0], MAX_NAME_LEN - 1);
decoded_name[MAX_NAME_LEN - 1] = '\0';
decodovane_slovo(decoded_name); // Декодируем название блюда
if (strstr(decoded_name, ingredient) != NULL) { // Проверка на совпадение с ингредиентом
printf("%s %s\n", dishes[i][0], dishes[i][1]); // Вывод оригинального названия и цены
}
}
// Вывод количества введенных блюд
printf("Nacitanych %d poloziek.\n", count);
return 0;
}