61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#define LIST_SIZE 100
 | 
						|
#define LINE_SIZE 101
 | 
						|
 | 
						|
struct pizza {
 | 
						|
    char name[101];
 | 
						|
    float prize;
 | 
						|
};
 | 
						|
 | 
						|
int read_pizza_list(struct pizza* list) {
 | 
						|
    int counter = 0;
 | 
						|
    char line[200];
 | 
						|
    for (int i=0; i < LIST_SIZE; i++) {
 | 
						|
        struct pizza item;
 | 
						|
        memset(&item,0,sizeof(struct pizza));
 | 
						|
        if (fgets(line, sizeof(line), stdin)==NULL) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        if (sscanf(line, "%[^\n]", item.name) !=1) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        if (fgets(line, sizeof(line), stdin)==NULL) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        if (sscanf(line, "%f", &item.prize) !=1) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        memcpy(&list[i], &item,sizeof(struct pizza));
 | 
						|
        counter +=1;
 | 
						|
    }
 | 
						|
    return counter;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int compare (const void* a, const void* b) {
 | 
						|
    
 | 
						|
    struct pizza* pizza_a = (struct pizza*)a;
 | 
						|
    struct pizza* pizza_b = (struct pizza*)b;
 | 
						|
 | 
						|
    int result;
 | 
						|
 | 
						|
    if (pizza_a->prize < pizza_b->prize) {
 | 
						|
        result=-1;
 | 
						|
    } else if (pizza_a->prize > pizza_b->prize) {
 | 
						|
        result=1;
 | 
						|
    } else {
 | 
						|
        result = strcmp(pizza_a->name, pizza_b->name);
 | 
						|
    }
 | 
						|
    return result;
 | 
						|
}
 | 
						|
int main() {
 | 
						|
    struct pizza list[LIST_SIZE];
 | 
						|
    int kolichestvo = read_pizza_list(list);
 | 
						|
    qsort(list, kolichestvo, sizeof(struct pizza), compare);
 | 
						|
    for (int i=0;i<kolichestvo;i++) {
 | 
						|
        printf("%s\n%f\n", list[i].name, list[i].prize);
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
} |