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