Обновить cv1/program.c
This commit is contained in:
		
							parent
							
								
									6cce783d90
								
							
						
					
					
						commit
						2f74cf522a
					
				
							
								
								
									
										112
									
								
								cv1/program.c
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								cv1/program.c
									
									
									
									
									
								
							| @ -1,97 +1,63 @@ | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <ctype.h> | ||||
| #include <windows.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; | ||||
| void normalize(char *str) { | ||||
|     for (int i = 0; str[i] != '\0'; i++) { | ||||
|         switch (str[i]) { | ||||
|             case '0': str[i] = 'o'; break; | ||||
|             case '1': str[i] = 'i'; break; | ||||
|             case '2': str[i] = 'z'; break; | ||||
|             case '3': str[i] = 'e'; break; | ||||
|             case '4': str[i] = 'a'; break; | ||||
|             case '5': str[i] = 's'; break; | ||||
|             case '6': str[i] = 'b'; break; | ||||
|             case '7': str[i] = 't'; break; | ||||
|             case '8': str[i] = 'b'; break; | ||||
|             case '9': str[i] = 'q'; break; | ||||
|             default: str[i] = tolower(str[i]); break; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| int main() { | ||||
|     char ingredient[MAX_NAME_LEN]; | ||||
|     char dishes[MAX_DISHES][2][MAX_NAME_LEN];  // Массив для хранения блюд и цен
 | ||||
|     int count = 0;  // Количество введенных блюд
 | ||||
|     SetConsoleOutputCP(CP_UTF8);   | ||||
|     char search[100]; | ||||
|     char item_name[100]; | ||||
|     char price[10]; | ||||
|     int count = 0;  | ||||
| 
 | ||||
|     // Запрос ингредиента
 | ||||
|     printf("Zadaj hladanu surovinu:\n"); | ||||
|     if (fgets(ingredient, MAX_NAME_LEN, stdin) == NULL) { | ||||
|         return 0;  // Выход, если ввод не удался
 | ||||
|     } | ||||
|     ingredient[strcspn(ingredient, "\n")] = '\0';  // Удаление символа новой строки
 | ||||
|     printf("%s\n", ingredient);  // Вывод ингредиента сразу после запроса
 | ||||
| 
 | ||||
|     // Запрос списка блюд
 | ||||
|     printf("Zadaj hladanu surovinu:"); | ||||
|     fgets(search, sizeof(search), stdin); | ||||
|     search[strcspn(search, "\n")] = '\0';  | ||||
|     normalize(search);  | ||||
| 
 | ||||
|     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';  // Удаление символа новой строки
 | ||||
|         fgets(item_name, sizeof(item_name), stdin); | ||||
|         item_name[strcspn(item_name, "\n")] = '\0'; | ||||
|         if (strlen(item_name) == 0) break;  | ||||
| 
 | ||||
|         // Если строка пустая, завершить ввод
 | ||||
|         if (strlen(name) == 0) { | ||||
|             break; | ||||
|         } | ||||
| 
 | ||||
|         // Чтение цены
 | ||||
|         if (fgets(price, MAX_NAME_LEN, stdin) == NULL) { | ||||
|             return 0;  // Выход, если ввод не удался
 | ||||
|         } | ||||
|         price[strcspn(price, "\n")] = '\0';  // Удаление символа новой строки
 | ||||
|         fgets(price, sizeof(price), stdin); | ||||
|         price[strcspn(price, "\n")] = '\0';  | ||||
|         count++; | ||||
| 
 | ||||
|         // Сохранение названия блюда и цены
 | ||||
|         strncpy(dishes[count][0], name, MAX_NAME_LEN - 1); | ||||
|         dishes[count][0][MAX_NAME_LEN - 1] = '\0';  // Завершение строки
 | ||||
|         char normalized_name[100]; | ||||
|         strcpy(normalized_name, item_name);  | ||||
|         normalize(normalized_name);   | ||||
| 
 | ||||
|         strncpy(dishes[count][1], price, MAX_NAME_LEN - 1); | ||||
|         dishes[count][1][MAX_NAME_LEN - 1] = '\0';  // Завершение строки
 | ||||
| 
 | ||||
|         count++;  // Увеличение счётчика блюд
 | ||||
|     } | ||||
| 
 | ||||
|     // Декодирование введенного ингредиента
 | ||||
|     decodovane_slovo(ingredient); | ||||
| 
 | ||||
|     // Поиск и вывод блюд, содержащих искомый ингредиент
 | ||||
|     int found = 0;  // Флаг для отслеживания, если хотя бы одно блюдо будет найдено
 | ||||
|     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]);  // Вывод оригинального названия и цены
 | ||||
|             found = 1; | ||||
|         if (strstr(normalized_name, search) != NULL) { | ||||
|             printf("%s\n%s\n", item_name, price); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if (!found) { | ||||
|         printf("\n");  // Если блюда не найдены, добавить пустую строку перед счетчиком
 | ||||
|     } | ||||
| 
 | ||||
|     // Вывод количества введенных блюд
 | ||||
|     printf("Nacitanych %d poloziek.\n", count); | ||||
|     printf("Считано %d блюд.\n", count); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user