diff --git a/du2/output/program.exe b/du2/output/program.exe new file mode 100644 index 0000000..9a7c841 Binary files /dev/null and b/du2/output/program.exe differ diff --git a/du2/program.c b/du2/program.c index 1be5051..c474ff3 100644 --- a/du2/program.c +++ b/du2/program.c @@ -6,7 +6,7 @@ struct pizza { char name[101]; - float price; + float prize; }; int read_pizza_list(struct pizza* list) { @@ -24,10 +24,10 @@ int read_pizza_list(struct pizza* list) { if (fgets(line, sizeof(line), stdin)==NULL) { break; } - if (sscanf(line, "%f", &item.price) !=1) { + if (sscanf(line, "%f", &item.prize) !=1) { break; } - memcpy(&listok[i], &item,sizeof(struct pizza)); + memcpy(&list[i], &item,sizeof(struct pizza)); counter +=1; } return counter; @@ -36,8 +36,26 @@ int read_pizza_list(struct pizza* list) { 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