diff --git a/cv2/program.c b/cv2/program.c index 618d992..64edefc 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -9,8 +9,12 @@ struct pizza { char name[LINESIZE]; }; -int compare_pizza(const void * a, const void *b){ - return( *(int*)a - *(int*)b); +int compare_pizza(const void *a, const void *b) { + const struct pizza *pizza1 = (const struct pizza *)a; + const struct pizza *pizza2 = (const struct pizza *)b; + if (pizza1->price < pizza2->price) return -1; + if (pizza1->price > pizza2->price) return 1; + return strcmp(pizza1->name, pizza2->name); } int main(){ @@ -22,7 +26,7 @@ int main(){ vstup[strcspn(vstup, "\n")] = '\0'; if (strlen(vstup) == 0) { break; - } + } strcpy(menu[count].name, vstup); } else { break; @@ -40,6 +44,7 @@ int main(){ } count++; } + //qsort (menu, count, sizeof(struct pizza), compare_pizza_name); qsort (menu, count, sizeof(struct pizza), compare_pizza); for(int i = 0; i < count;i++){ printf("%s\n", menu[i].name);