Add cv2/program.c
This commit is contained in:
		
							parent
							
								
									87d951d852
								
							
						
					
					
						commit
						02b376ebe8
					
				
							
								
								
									
										71
									
								
								cv2/program.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								cv2/program.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| 
 | ||||
| #define LINE_SIZE 100 | ||||
| #define LIST_SIZE 100 | ||||
| 
 | ||||
| struct pizza { | ||||
|     char name[LINE_SIZE]; | ||||
|     float price; | ||||
| }; | ||||
| 
 | ||||
| int read_item(struct pizza *item) { | ||||
|      | ||||
|     if (fgets(item->name, LINE_SIZE, stdin) == NULL || item->name[0] == '\n') { | ||||
|         return 0;  | ||||
|     } | ||||
|      | ||||
|     item->name[strcspn(item->name, "\n")] = 0; | ||||
| 
 | ||||
|     | ||||
|     if (scanf("%f", &item->price) != 1 || item->price <= 0) { | ||||
|          | ||||
|         return 0; | ||||
|     } | ||||
|      | ||||
|     while (getchar() != '\n'); | ||||
| 
 | ||||
|     return 1;  | ||||
| } | ||||
| 
 | ||||
| int compare_pizza(const void *a, const void *b) { | ||||
|     struct pizza *pizza_a = (struct pizza *)a; | ||||
|     struct pizza *pizza_b = (struct pizza *)b; | ||||
| 
 | ||||
|     if (pizza_a->price < pizza_b->price) return -1; | ||||
|     if (pizza_a->price > pizza_b->price) return 1; | ||||
|     return strcmp(pizza_a->name, pizza_b->name);  | ||||
| } | ||||
| 
 | ||||
| int read_pizza_list(struct pizza *list) { | ||||
|     int count = 0; | ||||
|     while (count < LIST_SIZE) { | ||||
|         struct pizza item; | ||||
|         memset(&item, 0, sizeof(struct pizza)); | ||||
|         if (read_item(&item)) { | ||||
|             list[count++] = item;  | ||||
|         } else { | ||||
|             break;  | ||||
|         } | ||||
|     } | ||||
|     return count;  | ||||
| } | ||||
| 
 | ||||
| void print_pizza_list(struct pizza *list, int count) { | ||||
|     for (int i = 0; i < count; i++) { | ||||
|         printf("%s\n%.6f\n", list[i].name, list[i].price); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| int main() { | ||||
|     struct pizza list[LIST_SIZE]; | ||||
|     memset(list, 0, sizeof(list));  | ||||
| 
 | ||||
|     int count = read_pizza_list(list);  | ||||
|     qsort(list, count, sizeof(struct pizza), compare_pizza);  | ||||
| 
 | ||||
|     print_pizza_list(list, count);  | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user