diff --git a/cv2/program.c b/cv2/program.c index 2e9c03d..b3f3f81 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -1,55 +1,61 @@ #include #include #include -#include -#define LINE_SIZE 100 -#define LIST_SIZE 100 +#define MAX_NAME_LENGTH 100 +#define MAX_ITEMS 100 -struct pizza{ - char name[LINE_SIZE]; +typedef struct { + char name[MAX_NAME_LENGTH]; float price; -} +} Pizza; -int read_pizza_list(struct pizza* list){ - char buffer[LINE_SIZE] - while(fgets(buffer, LINE_SIZT, stdin) == 0){ - +int compare(const void *a, const void *b) { + Pizza *pizzaA = (Pizza *)a; + Pizza *pizzaB = (Pizza *)b; + + if (pizzaA->price != pizzaB->price) { + return (pizzaA->price > pizzaB->price) - (pizzaA->price < pizzaB->price); } + return strcasecmp(pizzaA->name, pizzaB->name); } -int read_item(struct pizza* list) { - -} - - -int main(){ - struct pizza vacerajsia = {.name = "Vajcova pizza", .price = 0.2}; - printf("Pizza: %s, cena: %f/n", vacerajsia.name, vacerajsia.price -0.1); +int read_pizza_list(Pizza *menu) { + int count = 0; + char input[MAX_NAME_LENGTH]; - // Prechadzajte vsetky miesta jedalneho listka - int counter = 0; - for (int i=0; i< LIST_SIZE; i++){ - struct pizza item; - memset(&item,0,sizeof(struct pizza)); - // Nacitajte polozku do pomocnej premennej - // Na nacitanie pouzite vlastny kod - int r = read_item(&item); - if (r){ - // Ak sa nacitanie podarilo, skopirujte polozku do pola - memcpy(&listok[i],&item,sizeof(struct pizza)); - // Spocitame uspesne nacitane polozky - counter += 1; - } - else{ - // Ak sa nacitanie nepodarilo, nasli sme poslednu polozku - // Prerusim nacitanie + // Nacitame pizza + while (count < MAX_ITEMS && fgets(input, sizeof(input), stdin)) { + input[strcspn(input, "\n")] = 0; // Odstran znak noveho riadku + + // Nacitame cenu pizze + char price_str[10]; + if (fgets(price_str, sizeof(price_str), stdin) == NULL) { break; } + + float price = atof(price_str); + if (price <= 0) { + break; + } + + strncpy(menu[count].name, input, MAX_NAME_LENGTH - 1); + menu[count].price = price; + count++; } - // Na konci budemem mat nacitany jedalny listok - // V premennej counter je pocet uspesne nacitanych poloziek - return 0; + return count; } - +int main() { + Pizza menu[MAX_ITEMS]; + + int item_count = read_pizza_list(menu); + + qsort(menu, item_count, sizeof(Pizza), compare); + + for (int i = 0; i < item_count; i++) { + printf("%s\n%.6f\n", menu[i].name, menu[i].price); + } + + return 0; +}