65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
#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;
|
|
}
|