Upload files to 'cv2'
This commit is contained in:
parent
c9050ce5f4
commit
e65ddf2a87
59
cv2/program.c
Normal file
59
cv2/program.c
Normal file
@ -0,0 +1,59 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define LINE_LEN 100
|
||||
#define LIST_SIZE 128
|
||||
typedef struct {
|
||||
char name[LINE_LEN];
|
||||
float price;
|
||||
} pizza;
|
||||
int get_line(char *name);
|
||||
int get_pizza(pizza *p_item);
|
||||
int compare_pizza(const void* pVoid1, const void* pVoid2);
|
||||
int main() {
|
||||
pizza items[LIST_SIZE];
|
||||
memset(items,0,sizeof(items));
|
||||
int count = 0;
|
||||
while(get_pizza(items + count)) {
|
||||
count++;
|
||||
}
|
||||
qsort(items, count, sizeof(pizza), compare_pizza);
|
||||
int i = 0;
|
||||
while(i < count) {
|
||||
printf("%s\n%f\n", items[i].name, items[i].price);
|
||||
i++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int get_line(char *name)
|
||||
{
|
||||
memset(name, 0, LINE_LEN);
|
||||
char* r = fgets(name, LINE_LEN, stdin);
|
||||
if (r == NULL || name[1] == 0) {
|
||||
return 0;
|
||||
}
|
||||
int n = strlen(name);
|
||||
if (name[n - 1] == '\n')
|
||||
name[n - 1] = 0;
|
||||
return 1;
|
||||
}
|
||||
int get_pizza(pizza *p_item)
|
||||
{
|
||||
int res = get_line(p_item->name);
|
||||
char price_string[LINE_LEN];
|
||||
res += get_line(price_string);
|
||||
if (res != 2) return 0;
|
||||
sscanf(price_string, "%f", &(p_item->price));
|
||||
if(p_item->price == 0.) return 0;
|
||||
return 1;
|
||||
}
|
||||
int compare_pizza(const void* pVoid1, const void* pVoid2) {
|
||||
pizza* pPizza1 = (pizza*) pVoid1;
|
||||
float price1 = pPizza1->price;
|
||||
pizza* pPizza2 = (pizza*) pVoid2;
|
||||
float price2 = pPizza2->price;
|
||||
float r = price1 - price2;
|
||||
if (r > 0.) return 1;
|
||||
if (r < 0.) return -1;
|
||||
if (r == 0.) return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user