Update cv1/program.c
This commit is contained in:
		
							parent
							
								
									3694e026ad
								
							
						
					
					
						commit
						87d951d852
					
				| @ -6,21 +6,21 @@ | |||||||
| #define LINESIZE 100 | #define LINESIZE 100 | ||||||
| #define MAX_PIZZAS 100 | #define MAX_PIZZAS 100 | ||||||
| 
 | 
 | ||||||
| // Structure to store pizza menu item
 | // Структура для хранения элемента меню пиццы
 | ||||||
| struct pizza { | struct pizza { | ||||||
|     float price; |     float price; | ||||||
|     char name[LINESIZE]; |     char name[LINESIZE]; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Function to convert a character to its Hacker Script form
 | // Функция для преобразования символа в его Хакер Скриптовая форма
 | ||||||
| char hacker_script(char c) { | char hacker_script(char c) { | ||||||
|     char numbers[] = "0123456789"; |     char numbers[] = "0123456789"; | ||||||
|     char letters[] = "oizeasbtbq"; |     char letters[] = "oizeasbtbq"; | ||||||
|      |      | ||||||
|     // Convert to lowercase first
 |     // Сначала преобразуйте в нижний регистр
 | ||||||
|     c = tolower(c); |     c = tolower(c); | ||||||
|      |      | ||||||
|     // Check for special characters
 |      // Проверка на специальные символы
 | ||||||
|     for (int i = 0; i < 10; i++) { |     for (int i = 0; i < 10; i++) { | ||||||
|         if (c == numbers[i]) { |         if (c == numbers[i]) { | ||||||
|             return letters[i]; |             return letters[i]; | ||||||
| @ -29,54 +29,54 @@ char hacker_script(char c) { | |||||||
|     return c; |     return c; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Function to normalize a string by applying hacker script rules
 | // Функция для нормализации строки с применением правил хакерского скрипта
 | ||||||
| void normalize_string(char *str) { | void normalize_string(char *str) { | ||||||
|     for (int i = 0; str[i]; i++) { |     for (int i = 0; str[i]; i++) { | ||||||
|         str[i] = hacker_script(str[i]); |         str[i] = hacker_script(str[i]); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Function to read one pizza item from input
 | // Функция для чтения одного элемента пиццы из ввода
 | ||||||
| int read_pizza(struct pizza *item) { | int read_pizza(struct pizza *item) { | ||||||
|     char line1[LINESIZE], line2[LINESIZE]; |     char line1[LINESIZE], line2[LINESIZE]; | ||||||
|      |      | ||||||
|     // Read name
 |     // Чтение имени
 | ||||||
|     if (fgets(line1, LINESIZE, stdin) == NULL) { |     if (fgets(line1, LINESIZE, stdin) == NULL) { | ||||||
|         return 0;  // Failed to read
 |         return 0;  // Не удалось прочитать
 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     // Remove newline character
 |      // Удалить символ новой строки
 | ||||||
|     line1[strcspn(line1, "\n")] = '\0'; |     line1[strcspn(line1, "\n")] = '\0'; | ||||||
| 
 | 
 | ||||||
|     // Read price
 |     // Чтение цены
 | ||||||
|     if (fgets(line2, LINESIZE, stdin) == NULL) { |     if (fgets(line2, LINESIZE, stdin) == NULL) { | ||||||
|         return 0;  // Failed to read
 |         return 0;  // Ошибка чтения
 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     float value = strtof(line2, NULL); |     float value = strtof(line2, NULL); | ||||||
|     if (value == 0.0F) { |     if (value == 0.0F) { | ||||||
|         return 0;  // Invalid price
 |         return 0;  // Неверная цена
 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     // Copy the read values
 |     // Копируем прочитанные значения
 | ||||||
|     strcpy(item->name, line1); |     strcpy(item->name, line1); | ||||||
|     item->price = value; |     item->price = value; | ||||||
|     return 1; |     return 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Function to search if a normalized needle exists in a normalized heap
 | // Функция для поиска, существует ли нормализованная игла в нормализованной куче
 | ||||||
| int search_string(const char *heap, const char *needle) { | int search_string(const char *heap, const char *needle) { | ||||||
|     char norm_heap[LINESIZE], norm_needle[LINESIZE]; |     char norm_heap[LINESIZE], norm_needle[LINESIZE]; | ||||||
|      |      | ||||||
|     // Make copies to normalize
 |     // Сделать копии для нормализации
 | ||||||
|     strcpy(norm_heap, heap); |     strcpy(norm_heap, heap); | ||||||
|     strcpy(norm_needle, needle); |     strcpy(norm_needle, needle); | ||||||
|      |      | ||||||
|     // Normalize both strings
 |     // Нормализуйте обе строки
 | ||||||
|     normalize_string(norm_heap); |     normalize_string(norm_heap); | ||||||
|     normalize_string(norm_needle); |     normalize_string(norm_needle); | ||||||
|      |      | ||||||
|     // Use strstr to find the normalized needle in the heap
 |     // Используйте strstr, чтобы найти нормализованную иглу в куче
 | ||||||
|     return strstr(norm_heap, norm_needle) != NULL; |     return strstr(norm_heap, norm_needle) != NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -85,21 +85,21 @@ int main() { | |||||||
|     char search[LINESIZE]; |     char search[LINESIZE]; | ||||||
|     int count = 0; |     int count = 0; | ||||||
| 
 | 
 | ||||||
|     // Read search string
 |     // Чтение строки поиска
 | ||||||
|     printf("Zadaj hladanu surovinu:\n"); |     printf("Zadaj hladanu surovinu:\n"); | ||||||
|     fgets(search, LINESIZE, stdin); |     fgets(search, LINESIZE, stdin); | ||||||
|     search[strcspn(search, "\n")] = '\0';  // Remove newline character
 |     search[strcspn(search, "\n")] = '\0';  // Удалить символ новой строки
 | ||||||
| 
 | 
 | ||||||
|     // Read menu
 |      // Чтение меню
 | ||||||
|     printf("Zadaj jedalny listok:\n"); |     printf("Zadaj jedalny listok:\n"); | ||||||
|     while (read_pizza(&menu[count])) { |     while (read_pizza(&menu[count])) { | ||||||
|         count++; |         count++; | ||||||
|         if (count >= MAX_PIZZAS) { |         if (count >= MAX_PIZZAS) { | ||||||
|             break;  // Limit reached
 |             break;   // Достигнут лимит
 | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Display valid dishes containing the searched ingredient
 |  // Отобразить подходящие блюда, содержащие искомый ингредиент
 | ||||||
|     int found = 0; |     int found = 0; | ||||||
|     for (int i = 0; i < count; i++) { |     for (int i = 0; i < count; i++) { | ||||||
|         if (search_string(menu[i].name, search)) { |         if (search_string(menu[i].name, search)) { | ||||||
| @ -109,7 +109,7 @@ int main() { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Display total items read
 |     // Отобразить общее количество элементов прочитано
 | ||||||
|     printf("Nacitanych %d poloziek.\n", count); |     printf("Nacitanych %d poloziek.\n", count); | ||||||
| 
 | 
 | ||||||
|     return 0; |     return 0; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user