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