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