Advertisement
Denis_Hristov

Homework nested structs

Apr 19th, 2024
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Student{
  5.     char name[20];
  6.     float grade;
  7. };
  8.  
  9. struct Klas{
  10.     unsigned int klasNumber;
  11.     struct Student students[30];
  12.     unsigned int studentsNum;
  13. };
  14.  
  15. struct Vipusk{
  16.     unsigned int year;
  17.     struct Klas klasove[5];
  18.     unsigned int klasoveNum;
  19. };
  20.  
  21. float calcAverageKlas(struct Klas klas){
  22.     float sum = 0;
  23.  
  24.     for(int i = 0; i < klas.studentsNum; i++){
  25.         sum += klas.students[i].grade;
  26.     }
  27.  
  28.     return sum / klas.studentsNum;
  29. }
  30.  
  31. float calcAverageVipusk(struct Vipusk* vipusk){
  32.     float sum = 0;
  33.     for(int i = 0; i < vipusk->klasoveNum; i++){
  34.         sum += calcAverageKlas(vipusk->klasove[i]);
  35.     }
  36.  
  37.     return sum / vipusk->klasoveNum;
  38. }
  39.  
  40. int main()
  41. {
  42.  
  43.     struct Vipusk vipusk;
  44.  
  45.     printf("Enter the number of classes: ");
  46.     scanf("%d", &vipusk.klasoveNum);
  47.  
  48.     for(int i = 0; i < vipusk.klasoveNum; i++){
  49.         printf("Enter the number of students for class %d: ", i + 1);
  50.         scanf("%d", &(vipusk.klasove[i].studentsNum));
  51.         for(int j = 0; j < vipusk.klasove[i].studentsNum; j++){
  52.             getchar();
  53.             printf("Please enter student name: \n");
  54.             fgets(vipusk.klasove[i].students[j].name, sizeof(vipusk.klasove[i].students[j].name), stdin);
  55.             printf("Please enter the grade: \n");
  56.             scanf("%f", &(vipusk.klasove[i].students[j].grade));
  57.  
  58.         }
  59.     }
  60.  
  61.     for (int i = 0; i < vipusk.klasoveNum; i++) {
  62.         printf("Average grade of class %d: %.2f\n", i + 1, calcAverageKlas(vipusk.klasove[i]));
  63.     }
  64.  
  65.     printf("Average grade of the vipusk: %.2f\n", calcAverageVipusk(&vipusk));
  66.  
  67.     return 0;
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement