usaa24/cv2/program.c

65 lines
1.6 KiB
C
Raw Normal View History

2024-10-11 12:23:25 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Štruktúra pre položku v menu
typedef struct {
char nazov[101]; // Názov pizze
double cena; // Cena pizze
} Pizza;
// Funkcia na porovnanie dvoch položiek (použije sa pre funkciu qsort)
int porovnaj(const void *a, const void *b) {
Pizza *pizzaA = (Pizza *)a;
Pizza *pizzaB = (Pizza *)b;
// Porovnanie podľa ceny
if (pizzaA->cena < pizzaB->cena) return -1;
if (pizzaA->cena > pizzaB->cena) return 1;
// Ak sú ceny rovnaké, porovnáme abecedne názvy
return strcmp(pizzaA->nazov, pizzaB->nazov);
}
int main() {
Pizza menu[100]; // Predpokladáme, že maximálny počet položiek je 100
int pocet = 0;
char nazov[101];
double cena;
// Načítanie položiek z vstupu
while (1) {
// Načítaj názov pizze
if (fgets(nazov, sizeof(nazov), stdin) == NULL) {
break; // Koniec vstupu
}
// Odstráň novú čiaru na konci názvu
nazov[strcspn(nazov, "\n")] = '\0';
// Načítaj cenu pizze
if (scanf("%lf", &cena) != 1) {
break; // Neplatný vstup (nesprávna cena alebo koniec vstupu)
}
// Vyčistenie vstupného bufferu (prečítať zvyšné znaky)
getchar();
// Uloženie položky do zoznamu
strcpy(menu[pocet].nazov, nazov);
menu[pocet].cena = cena;
pocet++;
}
// Zoradenie položiek
qsort(menu, pocet, sizeof(Pizza), porovnaj);
// Výpis zoradeného menu
for (int i = 0; i < pocet; i++) {
printf("%s\n%.6f\n", menu[i].nazov, menu[i].cena);
}
return 0;
}