du2
This commit is contained in:
parent
233adec10f
commit
db87c41a39
57
du2/program.c
Normal file
57
du2/program.c
Normal file
@ -0,0 +1,57 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define LINE_SIZE 101
|
||||
#define LIST_SIZE 100
|
||||
|
||||
struct pizza {
|
||||
char name[LINE_SIZE];
|
||||
float price;
|
||||
};
|
||||
|
||||
int read_item(struct pizza *item) {
|
||||
char buffer[LINE_SIZE];
|
||||
|
||||
if (fgets(buffer, LINE_SIZE, stdin) == NULL) return 0;
|
||||
buffer[strcspn(buffer, "\n")] = '\0';
|
||||
|
||||
if (strlen(buffer) == 0) return 0;
|
||||
strcpy(item->name, buffer);
|
||||
|
||||
if (fgets(buffer, LINE_SIZE, stdin) == NULL) return 0;
|
||||
return (sscanf(buffer, "%f", &item->price) == 1) ? 1 : 0;
|
||||
}
|
||||
|
||||
void swap(struct pizza *a, struct pizza *b) {
|
||||
struct pizza tmp = *a;
|
||||
*a = *b;
|
||||
*b = tmp;
|
||||
}
|
||||
|
||||
void bubble_sort(struct pizza *menu, int count) {
|
||||
for (int i = 0; i < count - 1; i++) {
|
||||
for (int j = 0; j < count - i - 1; j++) {
|
||||
int need_swap = (menu[j].price > menu[j + 1].price) ? 1 :
|
||||
(menu[j].price < menu[j + 1].price) ? 0 :
|
||||
(strcmp(menu[j].name, menu[j + 1].name) > 0 ? 1 : 0);
|
||||
if (need_swap) swap(&menu[j], &menu[j + 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
struct pizza menu[LIST_SIZE];
|
||||
size_t count;
|
||||
|
||||
for (count = 0; count < LIST_SIZE && read_item(&menu[count]); count++);
|
||||
|
||||
bubble_sort(menu, (int)count);
|
||||
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
puts(menu[i].name);
|
||||
printf("%.6f\n", menu[i].price);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user