Aktualizovat "program.c
This commit is contained in:
parent
27d681017f
commit
43ecf577d1
151
program.c
151
program.c
@ -0,0 +1,151 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define LINE_SIZE 100
|
||||
#define LIST_SIZE 20
|
||||
|
||||
struct pizza{
|
||||
char name[LINE_SIZE];
|
||||
float prize;
|
||||
};
|
||||
|
||||
int read_item(struct pizza* item);
|
||||
int read_pizza_list(struct pizza* list);
|
||||
|
||||
int compare_pizza(const void * left, const void * right) {
|
||||
const struct pizza * a = (const struct pizza *) left;
|
||||
const struct pizza * b = (const struct pizza *) right;
|
||||
if (a->prize > b->prize){
|
||||
return 1;
|
||||
}
|
||||
else if (a->prize < b->prize){
|
||||
return -1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
struct pizza list[LIST_SIZE];
|
||||
memset(list,0,LIST_SIZE*sizeof(struct pizza));
|
||||
|
||||
int counter = 0;
|
||||
for (int i=0; i< LIST_SIZE; i++){
|
||||
struct pizza item;
|
||||
memset(&item,0,sizeof(struct pizza));
|
||||
// Nacitajte polozku do pomocnej premennej
|
||||
// Na nacitanie pouzite vlastny kod
|
||||
int r = read_item(&item);
|
||||
if (r){
|
||||
// Ak sa nacitanie podarilo, skopirujte polozku do pola
|
||||
memcpy(&list[i],&item,sizeof(struct pizza));
|
||||
// Spocitame uspesne nacitane polozky
|
||||
counter += 1;
|
||||
}
|
||||
else{
|
||||
// Ak sa nacitanie nepodarilo, nasli sme poslednu polozku
|
||||
// Prerusim nacitanie
|
||||
break;
|
||||
}
|
||||
}
|
||||
qsort (list, counter, sizeof(struct pizza), compare_pizza);
|
||||
int i=0;
|
||||
for (i = 0; i < counter; i++) {
|
||||
printf("%s%.6f\n", list[i].name, list[i].prize);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
}
|
||||
|
||||
int read_item(struct pizza* item){
|
||||
|
||||
char line[LINE_SIZE];
|
||||
char line2[LINE_SIZE];
|
||||
memset(line,0,LINE_SIZE);
|
||||
memset(line2,0,LINE_SIZE);
|
||||
while (1){
|
||||
char *r = fgets(line,LINE_SIZE,stdin);
|
||||
if(r != NULL && line[1] != 0){
|
||||
int i=0;
|
||||
//printf("%s",line);
|
||||
while(line[i]!='\n' || line[i]!='\r'){
|
||||
if(line[i]=='\n'){
|
||||
//printf("Koniec n riadku\n");
|
||||
break;
|
||||
}
|
||||
else if(line[i]=='\r'){
|
||||
//printf("Koniec r riadku\n");
|
||||
break;
|
||||
}
|
||||
else if((line[i]>='a' && line[i]<='z') || (line[i]>='A' && line[i]<='Z') || line[i]==' '){
|
||||
//printf("%c\n",line[i]);
|
||||
i++;
|
||||
}
|
||||
else{
|
||||
//printf("NeplatnĂ˝ znak %c\n",line[i]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
i=0;
|
||||
char *r2 = fgets(line2,LINE_SIZE,stdin);
|
||||
if(r2 != NULL && line2[1] != 0){
|
||||
int i=0;
|
||||
int comma=0;
|
||||
int comma_number=0;
|
||||
//printf("%s",line);
|
||||
while(line2[i]!='\n' || line2[i]!='\r' || line2[i]!='\0'){
|
||||
if(line2[i]=='\n'){
|
||||
//printf("Koniec n riadku\n");
|
||||
break;
|
||||
}
|
||||
else if(line2[i]=='\r'){
|
||||
//printf("Koniec r riadku\n");
|
||||
break;
|
||||
}
|
||||
else if(line2[i]=='\0'){
|
||||
//printf("Koniec r riadku\n");
|
||||
break;
|
||||
}
|
||||
else if((line2[i]>='0' && line2[i]<='9') || line2[i]=='.'){
|
||||
//printf("%c\n",line[i]);
|
||||
if(line2[i]=='.'){
|
||||
comma++;
|
||||
}
|
||||
if(line2[i]!='.' && comma){
|
||||
comma_number++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
else{
|
||||
//printf("NeplatnĂ˝ znak %c\n",line[i]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
i=0;
|
||||
//printf("Comma %d\n",comma);
|
||||
//printf("Comma number %d\n",comma_number);
|
||||
if(comma!=1)return 0;
|
||||
if(comma_number!=2)return 0;
|
||||
float value = strtof(line2,NULL);
|
||||
if (value == 0.0F){
|
||||
return 0;
|
||||
}
|
||||
item->prize = value;
|
||||
strcpy(item->name, line);
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user