Update cv1/program.c
This commit is contained in:
		
							parent
							
								
									bd79afd389
								
							
						
					
					
						commit
						053a97a118
					
				| @ -9,13 +9,10 @@ struct MenuItem { | ||||
|     float price; | ||||
| }; | ||||
| 
 | ||||
| // Функція для нормалізації рядка за правилами "Hacker Script"
 | ||||
| // Function to normalize a string according to "Hacker Script" rules
 | ||||
| void normalize(char* str) { | ||||
|     for (int i = 0; str[i]; i++) { | ||||
|         // Замінюємо великі літери на маленькі
 | ||||
|         str[i] = tolower(str[i]); | ||||
|          | ||||
|         // Заміна символів відповідно до "Hacker Script"
 | ||||
|         switch (str[i]) { | ||||
|             case 'o': str[i] = '0'; break; | ||||
|             case 'i': str[i] = '1'; break; | ||||
| @ -23,37 +20,34 @@ void normalize(char* str) { | ||||
|             case 'e': str[i] = '3'; break; | ||||
|             case 'a': str[i] = '4'; break; | ||||
|             case 's': str[i] = '5'; break; | ||||
|             case 'b': str[i] = '6'; break; // Залишаємо 'b' на 6
 | ||||
|             case 'b': str[i] = '6'; break; | ||||
|             case 't': str[i] = '7'; break; | ||||
|             case 'g': str[i] = '9'; break; // Додаємо 'g' на 9
 | ||||
|             case 'q': str[i] = '9'; break; // Додаємо 'q' на 9
 | ||||
|             default: break; // нічого не робимо для інших символів
 | ||||
|             case 'g': str[i] = '9'; break; | ||||
|             case 'q': str[i] = '9'; break; | ||||
|             default: break; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Функція для зчитування страви
 | ||||
| // Function to read a menu item
 | ||||
| int read_menu_item(struct MenuItem* item) { | ||||
|     // Зчитуємо назву страви
 | ||||
|     if (fgets(item->dish, LINESIZE, stdin) == NULL) { | ||||
|         return 0; // Якщо зчитування не вдалося
 | ||||
|         return 0; // If reading failed
 | ||||
|     } | ||||
| 
 | ||||
|     // Перевіряємо, чи введено "end"
 | ||||
|     if (strcmp(item->dish, "end\n") == 0) { | ||||
|         return 0; // Якщо введено "end", виходимо
 | ||||
|         return 0; // Exit command "end"
 | ||||
|     } | ||||
| 
 | ||||
|     item->dish[strcspn(item->dish, "\n")] = 0; // видаляємо символ нового рядка
 | ||||
|      | ||||
|     // Зчитуємо ціну
 | ||||
|     item->dish[strcspn(item->dish, "\n")] = 0; // Remove newline character
 | ||||
| 
 | ||||
|     if (scanf("%f", &item->price) != 1) { | ||||
|         getchar(); // очищуємо буфер вводу
 | ||||
|         return 0; // Якщо зчитування не вдалося
 | ||||
|         getchar(); // Clear input buffer
 | ||||
|         return 0; // If reading failed
 | ||||
|     } | ||||
|     getchar(); // очищуємо буфер вводу
 | ||||
|     getchar(); // Clear input buffer
 | ||||
| 
 | ||||
|     return 1; // Успішне зчитування
 | ||||
|     return 1; // Successful reading
 | ||||
| } | ||||
| 
 | ||||
| int main(void) { | ||||
| @ -62,35 +56,38 @@ int main(void) { | ||||
| 
 | ||||
|     char search_string[LINESIZE]; | ||||
| 
 | ||||
|     // Prompt for the ingredient to search
 | ||||
|     printf("Zadaj hladanu surovinu: "); | ||||
|     fgets(search_string, LINESIZE, stdin); | ||||
|     search_string[strcspn(search_string, "\n")] = 0; // видаляємо символ нового рядка
 | ||||
|     search_string[strcspn(search_string, "\n")] = 0; // Remove newline character
 | ||||
| 
 | ||||
|     // Нормалізуємо рядок для пошуку
 | ||||
|     normalize(search_string); | ||||
|     // Normalize the search string
 | ||||
|     normalize(search_string); // Normalize the search string
 | ||||
| 
 | ||||
|     printf("Zadaj jedalny listok:\n"); | ||||
| 
 | ||||
|     while (item_count < LINESIZE) { // Додаємо перевірку на розмір
 | ||||
|     // Loop to read menu items
 | ||||
|     while (item_count < LINESIZE) { | ||||
|         struct MenuItem item; | ||||
|         if (!read_menu_item(&item)) { | ||||
|             break; // Виходимо з циклу при некоректному зчитуванні або "end"
 | ||||
|             break; // Exit loop on read error or "end"
 | ||||
|         } | ||||
|          | ||||
|         // Нормалізуємо назву страви
 | ||||
|         normalize(item.dish); | ||||
|         menu[item_count++] = item; // Додаємо страву в меню
 | ||||
|         // Normalize the dish name
 | ||||
|         normalize(item.dish);  | ||||
|         menu[item_count++] = item; // Add item to menu
 | ||||
|     } | ||||
| 
 | ||||
|     // Пошук і вивід знайдених страв
 | ||||
|     // Search for and print found dishes
 | ||||
|     int found = 0; | ||||
|     for (int i = 0; i < item_count; i++) { | ||||
|         if (strstr(menu[i].dish, search_string) != NULL) { | ||||
|         if (strstr(menu[i].dish, search_string) != NULL) { // Check if search_string is in dish
 | ||||
|             printf("%s\n%.2f\n", menu[i].dish, menu[i].price); | ||||
|             found = 1; | ||||
|             found = 1; // At least one dish found
 | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // Print message if search was unsuccessful
 | ||||
|     if (!found) { | ||||
|         printf("Zadana surovina nebola najdena.\n"); | ||||
|     } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user