usaa24/cv2/program.c

65 lines
1.4 KiB
C
Raw Permalink Normal View History

2024-10-11 12:23:25 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
2024-10-11 12:25:34 +00:00
// Štruktúra
2024-10-11 12:23:25 +00:00
typedef struct {
2024-10-11 12:25:34 +00:00
char nazov[101]; // Názov
double cena; // Cena
2024-10-11 12:23:25 +00:00
} Pizza;
2024-10-11 12:25:34 +00:00
// Funkcia na porovnanie dvoch položiek
2024-10-11 12:23:25 +00:00
int porovnaj(const void *a, const void *b) {
Pizza *pizzaA = (Pizza *)a;
Pizza *pizzaB = (Pizza *)b;
2024-10-11 12:25:34 +00:00
// Porovnanie ceny
2024-10-11 12:23:25 +00:00
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() {
2024-10-11 12:25:34 +00:00
Pizza menu[100];
2024-10-11 12:23:25 +00:00
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) {
2024-10-11 12:25:34 +00:00
break;
2024-10-11 12:23:25 +00:00
}
2024-10-11 12:25:34 +00:00
2024-10-11 12:23:25 +00:00
nazov[strcspn(nazov, "\n")] = '\0';
2024-10-11 12:25:34 +00:00
// Načítaj cenu
2024-10-11 12:23:25 +00:00
if (scanf("%lf", &cena) != 1) {
2024-10-11 12:25:34 +00:00
break;
2024-10-11 12:23:25 +00:00
}
2024-10-11 12:25:34 +00:00
// Vyčistenie vstupného bufferu
2024-10-11 12:23:25 +00:00
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;
}