Minor setback, renaming the folder

This commit is contained in:
Anton Dolozin 2025-09-29 13:15:18 +02:00
parent f980b506a3
commit a8e7e2b7a6

75
du2/program.c Normal file
View File

@ -0,0 +1,75 @@
#define LINE_SIZE 100
#define LIST_SIZE 75
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
struct pizza{
char name[LINE_SIZE];
float prize;
};
struct pizza list[LIST_SIZE];
int read_item(struct pizza *item) {
char line[LINE_SIZE];
char line2[LINE_SIZE];
if (!fgets(line, sizeof(line), stdin))
return 0;
if (strlen(line) == 0)
return 0;
if (!fgets(line2, sizeof(line2), stdin))
return 0;
char *endptr;
float value = strtof(line2, &endptr);
if (value == 0.0F)
return 0;
strcpy(item->name, line);
item->prize = value;
return 1;
}
int read_pizza_list(struct pizza* list){
int counter = 0;
for (int i = 0; i<LIST_SIZE; i++){
struct pizza item;
memset(&item, 0, sizeof( struct pizza));
int r = read_item(&item);
if(r){
memcpy(&list[i],&item,sizeof(struct pizza));
counter++;
}
else{
break;;
}
}
return counter;
}
int compare_pizza (const void *a, const void *b){
float prize1 = ((struct pizza*)a)->prize;
float prize2 = ((struct pizza*)b)->prize;
int r2 = strcmp(((struct pizza*)a)->name, ((struct pizza*)b)->name);
int r;
if (prize1 < prize2){
r = -1;
return r;
}
else if(prize1 > prize2){
r = 1;
return r;
}
else{ return r2;}
}
int main(void){
int size= read_pizza_list(list);
qsort(list, size, sizeof(struct pizza), compare_pizza);
for(int i = 0; i<size; i++){
printf("%s%f\n", list[i].name, list[i].prize);
}
return 0;
}