fork download
  1. //Diego Martinez CSC5 Chapter 9, P.537, #2
  2. /*******************************************************************************
  3. * CALCULATING AND SORTING TEST SCORES DYNAMICALLY
  4. * ______________________________________________________________________________
  5. * This program dynamically allocates an array of test scores based on user input,
  6. * sorts the scores in ascending order using a sorting function, and calculates
  7. * the average score using a separate function. Pointer notation is used throughout
  8. * the program whenever possible.
  9. *
  10. * Computation is based on the Formula:
  11. *
  12. * Average = (sum of all test scores) / (number of test scores)
  13. *
  14. *______________________________________________________________________________
  15. * INPUT
  16. *
  17. * number of test scores (size of dynamic array)
  18. * test scores entered by the user (non-negative values)
  19. *
  20. * OUTPUT
  21. *
  22. * sorted list of test scores (ascending order)
  23. * average of all test scores
  24. *
  25. *******************************************************************************/
  26. #include <iostream>
  27. using namespace std;
  28.  
  29. // Function prototypes
  30. void sortScores(double* scores, int size);
  31. double calculateAverage(double* scores, int size);
  32.  
  33. int main()
  34. {
  35. double* scores;
  36. int size;
  37.  
  38. // Ask user for number of test scores
  39. cout << "Enter number of test scores: ";
  40. cin >> size;
  41.  
  42. // Dynamically allocate array
  43. scores = new double[size];
  44.  
  45. // Input scores with validation
  46. for (int i = 0; i < size; i++)
  47. {
  48. cout << "Enter score " << (i + 1) << ": ";
  49. cin >> *(scores + i);
  50.  
  51. // Input validation: no negative numbers
  52. while (*(scores + i) < 0)
  53. {
  54. cout << "Invalid input. Enter a non-negative score: ";
  55. cin >> *(scores + i);
  56. }
  57. }
  58.  
  59. // Sort scores
  60. sortScores(scores, size);
  61.  
  62. // Calculate average
  63. double average = calculateAverage(scores, size);
  64.  
  65. // Display sorted scores
  66. cout << "\nSorted Test Scores:" << endl;
  67. for (int i = 0; i < size; i++)
  68. {
  69. cout << *(scores + i) << " ";
  70. }
  71.  
  72. // Display average
  73. cout << "\n\nAverage Score: " << average << endl;
  74.  
  75. // Free memory
  76. delete[] scores;
  77.  
  78. return 0;
  79. }
  80.  
  81. // Function to sort scores (ascending order using bubble sort)
  82. void sortScores(double* scores, int size)
  83. {
  84. double temp;
  85.  
  86. for (int i = 0; i < size - 1; i++)
  87. {
  88. for (int j = 0; j < size - i - 1; j++)
  89. {
  90. if (*(scores + j) > *(scores + j + 1))
  91. {
  92. temp = *(scores + j);
  93. *(scores + j) = *(scores + j + 1);
  94. *(scores + j + 1) = temp;
  95. }
  96. }
  97. }
  98. }
  99.  
  100. // Function to calculate average
  101. double calculateAverage(double* scores, int size)
  102. {
  103. double sum = 0;
  104.  
  105. for (int i = 0; i < size; i++)
  106. {
  107. sum += *(scores + i);
  108. }
  109.  
  110. return sum / size;
  111. }
Success #stdin #stdout 0s 5320KB
stdin
3
85
90
78
stdout
Enter number of test scores: Enter score 1: Enter score 2: Enter score 3: 
Sorted Test Scores:
78 85 90 

Average Score: 84.3333