fork download
  1. // Torrez, Elaine CS1A Chapter 9, P. 539, #10
  2.  
  3. /********************************************************************************************
  4.  *
  5.  * REVERSE ARRAY
  6.  *
  7.  * ------------------------------------------------------------------------------------------
  8.  * This program demonstrates a function that accepts a pointer to an integer array and its
  9.  * size, and returns a NEW dynamically allocated array that contains the original array's
  10.  * values in reverse order.
  11.  *
  12.  * The program asks the user to enter the number of integers, stores them in an array,
  13.  * calls the reverseArray function, and displays the reversed array.
  14.  *
  15.  * ------------------------------------------------------------------------------------------
  16.  * INPUT
  17.  * size : Number of integers
  18.  * arr : Values entered by the user
  19.  *
  20.  * OUTPUT
  21.  * reversed array containing the values in reverse order
  22.  *
  23.  ********************************************************************************************/
  24.  
  25. #include <iostream>
  26. using namespace std;
  27.  
  28. // FUNCTION PROTOTYPE
  29. int *reverseArray(int *arr, int size);
  30.  
  31. int main()
  32. {
  33. int size; // Number of elements
  34. int *arr = nullptr;
  35. int *reversed = nullptr;
  36.  
  37. // INPUT: Ask user for amount of integers
  38. cout << "How many integers would you like to enter? ";
  39. cin >> size;
  40.  
  41. // INPUT VALIDATION
  42. while (size <= 0)
  43. {
  44. cout << "Error: Enter a number greater than 0: ";
  45. cin >> size;
  46. }
  47.  
  48. // Allocate original array
  49. arr = new int[size];
  50.  
  51. // INPUT: Fill the array
  52. for (int i = 0; i < size; i++)
  53. {
  54. cout << "Enter value #" << (i + 1) << ": ";
  55. cin >> arr[i];
  56. }
  57.  
  58. // Call function to reverse array
  59. reversed = reverseArray(arr, size);
  60.  
  61. // OUTPUT: Reversed array
  62. cout << "\nReversed Array:\n";
  63. for (int i = 0; i < size; i++)
  64. {
  65. cout << "Element [" << i << "] = " << reversed[i] << endl;
  66. }
  67.  
  68. // Free memory
  69. delete [] arr;
  70. delete [] reversed;
  71. arr = nullptr;
  72. reversed = nullptr;
  73.  
  74. return 0;
  75. }
  76.  
  77. //*******************************************************************************
  78. // reverseArray
  79. //------------------------------------------------------------------------------
  80. // Accepts a pointer to an int array and its size.
  81. // Allocates a new array and fills it with the original values in reverse order.
  82. // Returns a pointer to the new reversed array.
  83. //*******************************************************************************
  84. int *reverseArray(int *arr, int size)
  85. {
  86. int *rev = new int[size]; // Allocate new reversed array
  87.  
  88. for (int i = 0; i < size; i++)
  89. {
  90. rev[i] = arr[size - 1 - i]; // Copy from back to front
  91. }
  92.  
  93. return rev;
  94. }
  95.  
Success #stdin #stdout 0s 5320KB
stdin
5
10
20
30
40
50
stdout
How many integers would you like to enter? Enter value #1: Enter value #2: Enter value #3: Enter value #4: Enter value #5: 
Reversed Array:
Element [0] = 50
Element [1] = 40
Element [2] = 30
Element [3] = 20
Element [4] = 10