cv1
This commit is contained in:
		
							parent
							
								
									04a4d176f2
								
							
						
					
					
						commit
						6750985a85
					
				
							
								
								
									
										145
									
								
								cv1/program.c
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								cv1/program.c
									
									
									
									
									
								
							| @ -1,6 +1,143 @@ | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| int main() { | ||||
|     //aa
 | ||||
|     return 0; | ||||
| #include <string.h> | ||||
| #include <ctype.h> | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| #define LINESIZE 100 | ||||
| #define MAX_PIZZAS 1000 | ||||
| 
 | ||||
| struct pizza { | ||||
|     float prize; | ||||
|     char name[LINESIZE]; | ||||
| }; | ||||
| 
 | ||||
| // "Hacker Script"
 | ||||
| char hacker_script(char c) { | ||||
| 
 | ||||
|     c = tolower(c); | ||||
|      | ||||
|     char numbers[] = "0123456789"; | ||||
|     char letters[] = "oizeasbtbq"; | ||||
|      | ||||
|     for (int i = 0; i < 10; i++) { | ||||
|         if (c == numbers[i]) { | ||||
|             return letters[i]; | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     switch(c) { | ||||
|         case 'o': return 'o'; | ||||
|         case 'i': return 'i'; | ||||
|         case 'z': return 'z'; | ||||
|         case 'e': return 'e'; | ||||
|         case 'a': return 'a'; | ||||
|         case 's': return 's'; | ||||
|         case 'b': return 'b'; | ||||
|         case 't': return 't'; | ||||
|         case 'q': return 'q'; | ||||
|         default: return c; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void normalize_string(char* dest, const char* src) { | ||||
|     int j = 0; | ||||
|     for(int i = 0; src[i] != '\0' && j < LINESIZE - 1; i++) { | ||||
|         dest[j++] = hacker_script(src[i]); | ||||
|     } | ||||
|     dest[j] = '\0'; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| int search_string(const char* heap, const char* needle) { | ||||
|     int heap_len = strlen(heap); | ||||
|     int needle_len = strlen(needle); | ||||
|      | ||||
|     if(needle_len == 0) return 0; | ||||
|      | ||||
|     for(int i = 0; i <= heap_len - needle_len; i++) { | ||||
|         int j = 0; | ||||
|         while(j < needle_len && heap[i + j] == needle[j]) { | ||||
|             j++; | ||||
|         } | ||||
|         if(j == needle_len) { | ||||
|             return i;  | ||||
|         } | ||||
|     } | ||||
|     return -1;  | ||||
| } | ||||
| 
 | ||||
| // Funkcia na načítanie jednej položky jedálneho lístka
 | ||||
| int read_pizza(FILE* fp, struct pizza* item) { | ||||
|     char line1[LINESIZE]; | ||||
|     char line2[LINESIZE]; | ||||
|      | ||||
|     // Načítať názov
 | ||||
|     if(fgets(line1, sizeof(line1), fp) == NULL) { | ||||
|         return 0;  | ||||
|     } | ||||
|      | ||||
|      | ||||
|     line1[strcspn(line1, "\n")] = '\0'; | ||||
|      | ||||
| 
 | ||||
|     if(fgets(line2, sizeof(line2), fp) == NULL) { | ||||
|         return 0; | ||||
|     } | ||||
|      | ||||
|      | ||||
|     line2[strcspn(line2, "\n")] = '\0'; | ||||
|      | ||||
|      | ||||
|     float value = strtof(line2, NULL); | ||||
|      | ||||
|      | ||||
|     if(value == 0.0F && strcmp(line2, "0") != 0) { | ||||
|         return 0; | ||||
|     } | ||||
|      | ||||
|     item->prize = value; | ||||
|     strncpy(item->name, line1, LINESIZE - 1); | ||||
|     item->name[LINESIZE - 1] = '\0';  | ||||
|      | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| int main() { | ||||
|     char search_input[LINESIZE]; | ||||
|     char normalized_search[LINESIZE]; | ||||
|     struct pizza jedalny_listok[MAX_PIZZAS]; | ||||
|     int count = 0; | ||||
|     int matched = 0; | ||||
|      | ||||
|     printf("Zadaj hladanu surovinu:\n"); | ||||
|     if(fgets(search_input, sizeof(search_input), stdin) == NULL) { | ||||
|         fprintf(stderr, "Chyba pri načítavaní vyhľadávacieho reťazca.\n"); | ||||
|         return 1; | ||||
|     } | ||||
|      | ||||
|     search_input[strcspn(search_input, "\n")] = '\0'; | ||||
|      | ||||
| 
 | ||||
|     normalize_string(normalized_search, search_input); | ||||
|      | ||||
|     printf("Zadaj jedalny listok:\n"); | ||||
|      | ||||
|     while(count < MAX_PIZZAS && read_pizza(stdin, &jedalny_listok[count])) { | ||||
|         count++; | ||||
|     } | ||||
|      | ||||
|     for(int i = 0; i < count; i++) { | ||||
|         char normalized_name[LINESIZE]; | ||||
|         normalize_string(normalized_name, jedalny_listok[i].name); | ||||
|          | ||||
|         if(search_string(normalized_name, normalized_search) != -1) { | ||||
|             printf("%s\n%.2f\n", jedalny_listok[i].name, jedalny_listok[i].prize); | ||||
|             matched++; | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     printf("Nacitanych %d poloziek.\n", count); | ||||
|      | ||||
|     return 0; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user