Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_SIMBOL (2 + 1)
- #define MAX_SIZE (20 + 1)
- typedef struct element_st{
- char simbol[MAX_SIMBOL];
- char ime[MAX_SIZE];
- char vrsta[MAX_SIZE];
- unsigned int a_tezina;
- struct element_st *sl;
- }ELEMENT;
- void list_init(ELEMENT**);
- void delete_list(ELEMENT**);
- ELEMENT* make_element(char*,char*,char*,unsigned int);
- void add_to_list(ELEMENT**,ELEMENT*);
- FILE* safe_open(char*,char*);
- void load(FILE*,ELEMENT**);
- void save(FILE*,ELEMENT*,char*);
- int main(int argc, char** argv){
- if(argc != 4){
- printf("Nepravilno pokretanje programa.");
- return EXIT_FAILURE;
- }else{
- ELEMENT* el;
- FILE* file = safe_open(argv[2],"r");
- list_init(&el);
- load(file,&el);
- fclose(file);
- file = safe_open(argv[3],"w");
- save(file,el,argv[1]);
- delete_list(&el);
- return EXIT_SUCCESS;
- }
- }
- void list_init(ELEMENT **glava){
- *glava = NULL;
- }
- void delete_list(ELEMENT** glava){
- ELEMENT *t;
- while(*glava != NULL){
- t = *glava;
- *glava = (*glava)->sl;
- t->sl = NULL;
- free(t);
- }
- }
- ELEMENT* make_element(char* t_simbol,char* t_ime,char* t_vrsta,unsigned int t_tezina){
- ELEMENT* new = (ELEMENT*)malloc(sizeof(ELEMENT));
- if(new == NULL){
- printf("Nema dovoljno memorije.");
- exit(EXIT_FAILURE);
- }
- strcpy(new->simbol,t_simbol);
- strcpy(new->ime,t_ime);
- strcpy(new->vrsta,t_vrsta);
- new->a_tezina = t_tezina;
- new->sl = NULL;
- return new;
- }
- void add_to_list(ELEMENT** glava,ELEMENT* el){
- if(*glava == NULL){
- *glava = el;
- }else{
- ELEMENT* t = *glava;
- while(t->sl != NULL){
- t = t->sl;
- }
- t->sl = el;
- }
- return;
- }
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- FILE* safe_open(char* name,char* mode){
- FILE* f = fopen(name,mode);
- if(f == NULL){
- printf("Nemoguce je otvoriti fajl %s.\n",name);
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void load(FILE* f,ELEMENT** glava){
- char t_ime[MAX_SIZE];
- char t_vrsta[MAX_SIZE];
- char t_simbol[MAX_SIMBOL];
- unsigned int t_tezina;
- while(fscanf(f,"%s %s %u %s",
- t_simbol,
- t_ime,
- &t_tezina,
- t_vrsta) != EOF){
- add_to_list(glava,make_element(t_simbol,t_ime,t_vrsta,t_tezina));
- }
- return;
- }
- void save(FILE* f,ELEMENT* glava,char* vrsta){
- ELEMENT* t = glava,
- * s = NULL;
- while(t != NULL){
- fprintf(f,"%-2s %3u %s\n",
- t->simbol,t->a_tezina,t->vrsta);
- if(strcmp(t->vrsta,vrsta) == 0){
- if(s == NULL){
- s = t;
- }else{
- if(s->a_tezina < t->a_tezina){
- s = t;
- }
- }
- }
- t = t->sl;
- }
- if(s == NULL){
- fprintf(f,"\nNe postoji element vrste %s.",vrsta);
- }else{
- fprintf(f,"\nNajtezi %s je %s (%s), atomska tezina %u",vrsta,s->ime,s->simbol,s->a_tezina);
- }
- return;
- }
Add Comment
Please, Sign In to add comment