Update cv2/program.c
This commit is contained in:
parent
664cf46be7
commit
b51f1cd567
116
cv2/program.c
116
cv2/program.c
@ -1,5 +1,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#define LINE_SIZE 100
|
#define LINE_SIZE 100
|
||||||
#define LIST_SIZE 200
|
#define LIST_SIZE 200
|
||||||
@ -10,65 +11,21 @@ struct pizza
|
|||||||
float prize;
|
float prize;
|
||||||
};
|
};
|
||||||
|
|
||||||
int read_pizza_list(struct pizza* list);
|
int compare_pizza (struct pizza p1, struct pizza p2)
|
||||||
|
|
||||||
int compare_pizza (const void * a, const void * b)
|
|
||||||
{
|
{
|
||||||
struct pizza* p1=(struct pizza*)a;
|
if( p1.prize > p2.prize )
|
||||||
struct pizza* p2=(struct pizza*)b;
|
|
||||||
|
|
||||||
if( p1->prize > p2->prize )
|
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( p1.prize < p2.prize )
|
||||||
if( p1->prize < p2->prize )
|
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return strcmp(p1->name, p2->name);
|
return strcmp(p1.name, p2.name);
|
||||||
}
|
}
|
||||||
|
int read_pizza_list(struct pizza* list)
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
struct pizza list[LIST_SIZE];
|
|
||||||
memset(list,0,LIST_SIZE*sizeof(struct pizza));
|
|
||||||
|
|
||||||
int n=read_pizza_list(list);
|
|
||||||
printf("%d",n);
|
|
||||||
for(int k=0; k<n; k++)
|
|
||||||
printf("\n%s %f",list[k].name, list[k].prize);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int read_item(struct pizza *r)
|
|
||||||
{
|
|
||||||
char*p;
|
|
||||||
int st;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
p=fgets(r->name, 299, stdin);
|
|
||||||
}while(p!=NULL && p[0]=='\n');
|
|
||||||
|
|
||||||
if(p==NULL) {return 0;}
|
|
||||||
|
|
||||||
st=scanf("%f", &r->prize);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(st==1)
|
|
||||||
{return 1;}
|
|
||||||
else
|
|
||||||
{return 0;}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int read_pizza_list(struct pizza* list)
|
|
||||||
{
|
{
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
for (int i=0; i< LIST_SIZE; i++)
|
for (int i=0; i< LIST_SIZE; i++)
|
||||||
@ -84,11 +41,68 @@ int read_pizza_list(struct pizza* list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return counter;
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sort_pizza_list(struct pizza* list, int n)
|
||||||
|
{
|
||||||
|
bool sorted;
|
||||||
|
struct pizza tmp;
|
||||||
|
|
||||||
|
for(int k=0; k<n; k++)
|
||||||
|
{
|
||||||
|
sorted=true;
|
||||||
|
for(int i=0; i<n-1-k; i++)
|
||||||
|
{
|
||||||
|
if(compare_pizza(list[i], list[i+1])>1)
|
||||||
|
{
|
||||||
|
tmp=list[i];
|
||||||
|
list[i]=list[i+1];
|
||||||
|
list[i+1]=tmp;
|
||||||
|
sorted=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(sorted)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
struct pizza list[LIST_SIZE];
|
||||||
|
memset(list,0,LIST_SIZE*sizeof(struct pizza));
|
||||||
|
|
||||||
|
int n=read_pizza_list(list);
|
||||||
|
|
||||||
|
sort_pizza_list(&list,n);
|
||||||
|
|
||||||
|
for(int k=0; k<n; k++)
|
||||||
|
printf("\n%s%f",list[k].name, list[k].prize);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int read_item(struct pizza *r)
|
||||||
|
{
|
||||||
|
char*p;
|
||||||
|
int st;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
p=fgets(r->name, 299, stdin);
|
||||||
|
}while(p!=NULL && p[0]=='\n');
|
||||||
|
|
||||||
|
if(p==NULL) {return 0;}
|
||||||
|
|
||||||
|
st=scanf("%f", &r->prize);
|
||||||
|
|
||||||
|
if(st==1)
|
||||||
|
{return 1;}
|
||||||
|
else
|
||||||
|
{return 0;}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user