Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_INDEX (11 + 1)
- #define MAX_IME (20 + 1)
- #define MAX_PREZIME (30 + 1)
- typedef struct student_st{
- char br_indexa[MAX_INDEX];
- char ime[MAX_IME];
- char prezime[MAX_PREZIME];
- unsigned int oc1;
- unsigned int oc2;
- unsigned int oc3;
- unsigned int oc4;
- double prosek;
- struct student_st *sl;
- } STUDENT;
- FILE* safe_open(char*,char*);
- void list_init(STUDENT**);
- STUDENT *napravi_cvor(char*,char*,char*,unsigned,unsigned,unsigned,unsigned);
- void dodaj_na_kraj(STUDENT**,STUDENT*);
- void ucitaj(FILE*,STUDENT**);
- void free_st(STUDENT**);
- void ispisi(FILE*,STUDENT*);
- void nadji(char*,STUDENT*);
- int main(int argc, char **argv){
- FILE *s_file;
- STUDENT *glava;
- list_init(&glava);
- if(argc != 4){
- printf("Nepravilan broj argumenata.");
- }else{
- s_file = fopen(argv[1],"r");
- ucitaj(s_file,&glava);
- fclose(s_file);
- s_file = safe_open(argv[2],"w");
- ispisi(s_file,glava);
- fclose(s_file);
- nadji(argv[3],glava);
- free_st(&glava);
- }
- return 0;
- }
- FILE* safe_open(char* file,char* mode){
- FILE* f = fopen(file,mode);
- if(f == NULL){
- printf("Doslo je do greske.");
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void list_init(STUDENT **glava){
- *glava = NULL;
- }
- STUDENT *napravi_cvor(char* br_i,char* ime,char* prezime,unsigned o1,unsigned o2,unsigned o3,unsigned o4){
- STUDENT *novi = (STUDENT*)malloc(sizeof(STUDENT));
- if(novi == NULL){
- printf("nema dosta memorije.");
- exit(EXIT_FAILURE);
- }
- strcpy(novi->br_indexa,br_i);
- strcpy(novi->ime,ime);
- strcpy(novi->prezime,prezime);
- novi->oc1 = o1;
- novi->oc2 = o2;
- novi->oc3 = o3;
- novi->oc4 = o4;
- novi->prosek = (o1+o2+o3+o4)/4.;
- novi->sl = NULL;
- return novi;
- }
- void dodaj_na_kraj(STUDENT** glava,STUDENT* st){
- if(*glava == NULL){
- *glava = st;
- }else{
- STUDENT *t = *glava;
- while(t->sl != NULL){
- t = t->sl;
- }
- t->sl = st;
- }
- }
- void ucitaj(FILE* f,STUDENT **glava){
- char br[MAX_INDEX],
- ime[MAX_IME],
- prezime[MAX_PREZIME];
- int o1,
- o2,
- o3,
- o4;
- while(fscanf(f,"%s %s %s %u %u %u %d",
- br,
- ime,
- prezime,
- &o1,
- &o2,
- &o3,
- &o4) != EOF){
- dodaj_na_kraj(glava,napravi_cvor(br,ime,prezime,o1,o2,o3,o4));
- }
- }
- void free_st(STUDENT** glava){
- STUDENT *tmp;
- while(*glava != NULL){
- tmp = *glava;
- *glava = (*glava)->sl;
- tmp->sl = NULL;
- free(tmp);
- }
- }
- void ispisi(FILE* f,STUDENT* glava){
- STUDENT *t = glava;
- while(t != NULL){
- fprintf(f,"%s %s %s %u %u %u %u %.2lf\n",t->br_indexa,t->ime,t->prezime,t->oc1,t->oc2,t->oc3,t->oc4,t->prosek);
- t = t->sl;
- }
- }
- void nadji(char* indeks,STUDENT* glava){
- STUDENT *t = glava;
- while(t != NULL){
- if(strcmp(indeks,t->br_indexa) == 0){
- printf("Student %s %s ima prosek %.2lf.",t->ime,t->prezime,t->prosek);
- return;
- }
- t = t->sl;
- }
- printf("Ne postoji student sa zadatim brojem indeksa.");
- }
Add Comment
Please, Sign In to add comment