MartinSRB

Тема 6 - Задатак 1

Dec 12th, 2021 (edited)
897
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct stud{
  5.     unsigned int ocena;
  6.     struct stud *sl;
  7. } STUDENT;
  8.  
  9. void inicijalizacija(STUDENT**);
  10. STUDENT *napravi_cvor(int);
  11. void dodaj_na_kraj(STUDENT**,STUDENT*);
  12. double prosek(STUDENT*);
  13. void free_st(STUDENT**);
  14.  
  15. int main(){
  16.     char broj_indeksa[] = "ee300-2020",
  17.          ime_studenta[] = "Jovan Jovanovic";
  18.     STUDENT *glava;
  19.     inicijalizacija(&glava);
  20.     dodaj_na_kraj(&glava, napravi_cvor(8));
  21.     dodaj_na_kraj(&glava, napravi_cvor(7));
  22.     dodaj_na_kraj(&glava, napravi_cvor(9));
  23.     dodaj_na_kraj(&glava, napravi_cvor(10));
  24.     dodaj_na_kraj(&glava, napravi_cvor(6));
  25.     dodaj_na_kraj(&glava, napravi_cvor(8));
  26.     dodaj_na_kraj(&glava, napravi_cvor(9));
  27.     dodaj_na_kraj(&glava, napravi_cvor(8));
  28.     printf("Student %s, sa brojem indeksa %s, ima prosek %.2lf\n",ime_studenta, broj_indeksa, prosek(glava));
  29.     free_st(&glava);
  30.     return 0;
  31. }
  32.  
  33. void inicijalizacija(STUDENT** st){
  34.     *st = NULL;
  35. }
  36.  
  37. void dodaj_na_kraj(STUDENT** glava,STUDENT* st){
  38.     if(*glava == NULL){
  39.         *glava = st;
  40.     }else{
  41.         STUDENT *t = *glava;
  42.         while(t->sl != NULL){
  43.             t = t->sl;
  44.         }
  45.         t->sl = st;
  46.     }
  47. }
  48.  
  49. STUDENT *napravi_cvor(int ocena){
  50.     STUDENT *novi = (STUDENT*)malloc(sizeof(STUDENT));
  51.     if(novi == NULL){
  52.         printf("Nema dovoljno memorije.");
  53.         exit(EXIT_FAILURE);
  54.     }
  55.     novi->ocena = ocena;
  56.     novi->sl = NULL;
  57.     return novi;
  58. }
  59.  
  60. double prosek(STUDENT* glava){
  61.     int sum = 0,
  62.         n   = 0;
  63.     STUDENT *t = glava;
  64.     while(t != NULL){
  65.         sum += t->ocena;
  66.         n++;
  67.         t = t->sl;
  68.     }
  69.     return sum/(double)n;
  70. }
  71.  
  72. void free_st(STUDENT** glava){
  73.     STUDENT *tmp;
  74.     while(*glava != NULL){
  75.         tmp = *glava;
  76.         *glava = (*glava)->sl;
  77.         tmp->sl = NULL;
  78.         free(tmp);
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment