// Torrez, Elaine CS1A Chapter 9, P. 539, #10
/********************************************************************************************
*
* REVERSE ARRAY
*
* ------------------------------------------------------------------------------------------
* This program demonstrates a function that accepts a pointer to an integer array and its
* size, and returns a NEW dynamically allocated array that contains the original array's
* values in reverse order.
*
* The program asks the user to enter the number of integers, stores them in an array,
* calls the reverseArray function, and displays the reversed array.
*
* ------------------------------------------------------------------------------------------
* INPUT
* size : Number of integers
* arr : Values entered by the user
*
* OUTPUT
* reversed array containing the values in reverse order
*
********************************************************************************************/
#include <iostream>
using namespace std;
// FUNCTION PROTOTYPE
int *reverseArray(int *arr, int size);
int main()
{
int size; // Number of elements
int *arr = nullptr;
int *reversed = nullptr;
// INPUT: Ask user for amount of integers
cout << "How many integers would you like to enter? ";
cin >> size;
// INPUT VALIDATION
while (size <= 0)
{
cout << "Error: Enter a number greater than 0: ";
cin >> size;
}
// Allocate original array
arr = new int[size];
// INPUT: Fill the array
for (int i = 0; i < size; i++)
{
cout << "Enter value #" << (i + 1) << ": ";
cin >> arr[i];
}
// Call function to reverse array
reversed = reverseArray(arr, size);
// OUTPUT: Reversed array
cout << "\nReversed Array:\n";
for (int i = 0; i < size; i++)
{
cout << "Element [" << i << "] = " << reversed[i] << endl;
}
// Free memory
delete [] arr;
delete [] reversed;
arr = nullptr;
reversed = nullptr;
return 0;
}
//*******************************************************************************
// reverseArray
//------------------------------------------------------------------------------
// Accepts a pointer to an int array and its size.
// Allocates a new array and fills it with the original values in reverse order.
// Returns a pointer to the new reversed array.
//*******************************************************************************
int *reverseArray(int *arr, int size)
{
int *rev = new int[size]; // Allocate new reversed array
for (int i = 0; i < size; i++)
{
rev[i] = arr[size - 1 - i]; // Copy from back to front
}
return rev;
}