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];
- unsigned tezina;
- char vrsta[MAX_SIZE];
- struct element_st *sledeci;
- }ELEMENT;
- void inicijalizacija(ELEMENT**);
- void brisanje(ELEMENT**);
- ELEMENT* make_element(char*,char*,unsigned,char*);
- void dodavanje(ELEMENT**,ELEMENT*);
- FILE* safe_open(char*,char*);
- void ucitavanje(FILE*,ELEMENT**);
- void save(FILE* ,ELEMENT* ,char* );
- int main(int argc, char** argv){
- if(argc != 4){
- printf("Nepravilan poziv programa. Primer: %s metal uzorak_vino.txt analiza.txt\n",argv[0]);
- return EXIT_FAILURE;
- }else{
- ELEMENT *glava;
- FILE *file = safe_open(argv[2],"r");
- inicijalizacija(&glava);
- ucitavanje(file,&glava);
- fclose(file);
- file = safe_open(argv[3],"w");
- save(file,glava,argv[1]);
- fclose(file);
- brisanje(&glava);
- return EXIT_SUCCESS;
- }
- }
- void inicijalizacija(ELEMENT** glava){
- *glava=NULL;
- /*у коду који си ми послао имао си стављено == што је за проверу па је твоја листа увек нулл
- тј. празна и ти покушаваш да приступиш меморији која ти није додељена*/
- return;
- }
- void brisanje(ELEMENT** glava){
- ELEMENT *tekuci;
- while(*glava != NULL){
- tekuci = *glava;
- *glava = (*glava)->sledeci;
- free(tekuci);
- }
- }
- ELEMENT* make_element(char* t_simbol,char* t_ime,unsigned int t_tezina,char* t_vrsta){
- ELEMENT *novi = (ELEMENT*)malloc(sizeof(ELEMENT));
- if(novi == NULL){
- printf("Nije moguce zauzeti memoriju.\n");
- exit(EXIT_FAILURE);
- }
- strcpy(novi->simbol,t_simbol);
- strcpy(novi->ime,t_ime);
- strcpy(novi->vrsta,t_vrsta);
- novi->tezina = t_tezina;
- novi->sledeci = NULL;
- return novi;
- }
- void dodavanje(ELEMENT** glava,ELEMENT* novi){
- if(*glava==NULL){
- *glava=novi;
- }else{
- ELEMENT* tekuci=*glava;
- while(tekuci->sledeci !=NULL){
- tekuci = tekuci->sledeci;
- }
- tekuci->sledeci=novi;
- }
- }
- FILE* safe_open(char* name,char* mode){
- FILE *f = fopen(name,mode);
- if(f == NULL){
- printf("Nije moguce otvoriti fajl %s.\n",name);
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void ucitavanje(FILE* f,ELEMENT** glava){
- char simbol[MAX_SIMBOL],
- vrsta[MAX_SIZE],
- ime[MAX_SIZE];
- unsigned int tezina;
- while(fscanf(f,"%s %s %u %s",
- simbol,
- ime,
- &tezina,
- vrsta) != EOF){
- dodavanje(glava,make_element(simbol,ime,tezina,vrsta));
- }
- return;
- }
- void save(FILE* f,ELEMENT* glava,char* vrsta){
- ELEMENT *t = glava,
- *max = NULL;
- while(t != NULL){
- fprintf(f,"%-2s %3u %s\n",t->simbol,t->tezina,t->vrsta);
- if(strcmp(t->vrsta,vrsta) == 0){
- if(max == NULL){
- max = t;
- }else{
- if(max->tezina < t->tezina){
- max = t;
- }
- }
- }
- t = t->sledeci;
- }
- if(max == NULL){
- fprintf(f,"\nU uzorku nije pronadjen nijedan %s!",vrsta);
- }else{
- fprintf(f,"\nNajtezi %s je %s (%s), atomska tezina %u.",vrsta,max->ime,max->simbol,max->tezina);
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment