fork download
  1. // Torrez, Elaine CS1A Chapter 9, P. 539, #11
  2.  
  3. /********************************************************************************************
  4.  *
  5.  * ARRAY EXPANDER
  6.  *
  7.  * ------------------------------------------------------------------------------------------
  8.  * This program demonstrates a function that accepts an integer pointer and its size, and
  9.  * returns a NEW dynamically allocated array that is twice as large. The original array's
  10.  * values are copied into the new array, and the remaining elements are initialized to 0.
  11.  *
  12.  * ------------------------------------------------------------------------------------------
  13.  * INPUT
  14.  * size : Number of integers
  15.  * arr : Original integers entered by the user
  16.  *
  17.  * OUTPUT
  18.  * Expanded array containing original values followed by zeros
  19.  *
  20.  ********************************************************************************************/
  21.  
  22. #include <iostream>
  23. using namespace std;
  24.  
  25. // FUNCTION PROTOTYPE
  26. int *expandArray(int *arr, int size);
  27.  
  28. int main()
  29. {
  30. int size;
  31. int *arr = nullptr;
  32. int *expanded = nullptr;
  33.  
  34. // INPUT
  35. cout << "Enter number of integers: ";
  36. cin >> size;
  37.  
  38. while (size <= 0)
  39. {
  40. cout << "Error: Enter a number greater than 0: ";
  41. cin >> size;
  42. }
  43.  
  44. arr = new int[size];
  45.  
  46. for (int i = 0; i < size; i++)
  47. {
  48. cout << "Enter value #" << (i + 1) << ": ";
  49. cin >> arr[i];
  50. }
  51.  
  52. // Expand the array
  53. expanded = expandArray(arr, size);
  54.  
  55. // OUTPUT
  56. cout << "\nExpanded Array (size = " << size * 2 << "):\n";
  57. for (int i = 0; i < size * 2; i++)
  58. {
  59. cout << "Element [" << i << "] = " << expanded[i] << endl;
  60. }
  61.  
  62. delete [] arr;
  63. delete [] expanded;
  64. arr = nullptr;
  65. expanded = nullptr;
  66.  
  67. return 0;
  68. }
  69.  
  70. //*******************************************************************************
  71. // expandArray
  72. //------------------------------------------------------------------------------
  73. // Creates a new array twice the size of the original.
  74. // Copies original values and fills remaining spots with 0.
  75. //*******************************************************************************
  76. int *expandArray(int *arr, int size)
  77. {
  78. int newSize = size * 2;
  79. int *newArr = new int[newSize];
  80.  
  81. for (int i = 0; i < size; i++)
  82. newArr[i] = arr[i];
  83.  
  84. for (int i = size; i < newSize; i++)
  85. newArr[i] = 0;
  86.  
  87. return newArr;
  88. }
  89.  
Success #stdin #stdout 0.01s 5280KB
stdin
4
10
20
30
40
stdout
Enter number of integers: Enter value #1: Enter value #2: Enter value #3: Enter value #4: 
Expanded Array (size = 8):
Element [0] = 10
Element [1] = 20
Element [2] = 30
Element [3] = 40
Element [4] = 0
Element [5] = 0
Element [6] = 0
Element [7] = 0