Update cv2/program.c

This commit is contained in:
Yurii Yakovenko 2024-10-07 19:49:07 +00:00
parent 664cf46be7
commit b51f1cd567

View File

@ -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;}
} }