Advertisement
Guest User

Untitled

a guest
Sep 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.63 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define MAX_GRADE 100
  5. #define MIN_GRADE 0
  6.  
  7. void fillArr(int* arr, int len);
  8. void fillGrade(int* arr, int index);
  9. void printAvgGrade(int* arr, int len);
  10. void changeGrade(int* arr, int len);
  11. void printGrades(int* arr, int len);
  12. void changeNumGrades(int* arr, int* len);
  13. int validGrade(int grade);
  14.  
  15. enum options
  16. {
  17.     avarage = 1,
  18.     gradeChange,
  19.     changeAmountGrades,
  20.     print,
  21.     exitProgram
  22. };
  23.  
  24. int main()
  25. {
  26.     int numGrades = 0;
  27.     enum options choice = 0;
  28.     int* arrGrades = 0;
  29.     //getting input from user
  30.     printf("Please enter the number of grades: ");
  31.     scanf("%d", &numGrades);
  32.     fillArr(arrGrades, numGrades);
  33.     //executing choice
  34.     do {
  35.         printf("%d - Calculate avarage Grade\n", avarage);
  36.         printf("%d - Change grade\n", gradeChange);
  37.         printf("%d - Change number of grades\n", changeAmountGrades);
  38.         printf("%d - Print Grades\n", print);
  39.         printf("%d - Exit\n", exitProgram);
  40.         printf("Choose an option: ");
  41.         scanf("%d", &choice);
  42.         switch (choice) {
  43.             case avarage:
  44.                 printAvgGrade(arrGrades, numGrades);
  45.                 break;
  46.             case gradeChange:
  47.                 changeGrade(arrGrades, numGrades);
  48.                 break;
  49.             case changeAmountGrades:
  50.                 changeNumGrades(arrGrades, numGrades);
  51.                 break;
  52.             case print:
  53.                 printGrades(arrGrades, numGrades);
  54.                 break;
  55.             case exitProgram:
  56.                 break;
  57.             default:
  58.                 printf("Invalid choice! only 1-5, try again...\n");
  59.         }
  60.     } while (choice != exitProgram);
  61.  
  62.     return 0;
  63. }
  64. /*
  65. This function fill the array with a given len
  66. input: a pointer to the array, its len
  67. output: NONE
  68. */
  69. void fillArr(int* arr, int len)
  70. {
  71.     int i = 0;
  72.     arr = (int*)malloc(len * sizeof(int));
  73.     if (arr == NULL)
  74.     {
  75.         printf("Malloc fail!\n");
  76.         return 1;
  77.     }
  78.     for (i = 0; i < len; i++)
  79.     {
  80.         fillGrade(arr, i);
  81.     }
  82. }
  83. /*
  84. This funcion calc's and prints the avarage of grade
  85. input: the arr, its len
  86. outpu: NONE
  87. */
  88. void printAvgGrade(int* arr, int len)
  89. {
  90.     int i = 0;
  91.     int sum = 0;
  92.     for (i = 0; i < len; i++)
  93.     {
  94.         sum += arr[i];//error here
  95.     }
  96.     printf("The avarage grade is %2f", (float)sum / len);
  97. }
  98. /*
  99. This function changes a given grade in the array
  100. input: The array, its lengh
  101. output: NONE
  102. */
  103. void changeGrade(int* arr, int len)
  104. {
  105.     int position = 0;
  106.     printf("Which grade would you like to change?%d - %d: ", 1, len);
  107.     do
  108.     {
  109.         scanf("%d", &position);
  110.         (position < 1 && position > len) ? printf("Invalid position try again: ") : printf("\n");
  111.     } while (position < 1 && position > len);
  112.     fillGrade(arr, (position - 1));
  113. }
  114. /*
  115. This function changes the amount of grade if it greater then the previous amount
  116. input: the array, a pointer to its len
  117. output: NONE
  118. */
  119. void changeNumGrades(int* arr, int* len)
  120. {
  121.     int newLen = 0;
  122.     int i = 0;
  123.     printf("Please enter a new number of grades: ");
  124.     scanf("%d", &newLen);
  125.     if (newLen > *len)
  126.     {
  127.         for (i = *len; i < newLen; i++)
  128.         {
  129.             fillGrade(arr, i);
  130.         }
  131.         //changing the len of the arr to the new len
  132.         *len = newLen;
  133.     }
  134. }
  135. /*
  136. This function prints the grades
  137. input: the array and its len
  138. output: NONE
  139. */
  140. void printGrades(int* arr, int len)
  141. {
  142.     int i = 0;
  143.     for (i = 0; i < len; i++)
  144.     {
  145.         printf("%d ", arr[i]);//error here
  146.     }
  147. }
  148. /*
  149. This function fills a grade of a given index
  150. input: the index
  151. output:NONE
  152. */
  153. void fillGrade(int* arr, int index)
  154. {
  155.     printf("Enter Grade %d: ", index + 1);
  156.     do
  157.     {
  158.         scanf("%d", &arr[index]);
  159.         if (!validGrade(arr[index])) {
  160.             printf("Invalid grade only 0-100 try again: ");
  161.         }
  162.     } while (!validGrade(arr[index]));
  163. }
  164. /*
  165. This function check if a grade is valid
  166. input: a number
  167. output: 0 or 1
  168. */
  169. int validGrade(int grade)
  170. {
  171.     return (grade >= MIN_GRADE && grade <= MAX_GRADE);
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement