//Maxwell Brewer CS1A Chapter 9, p. 539, #11
//
/*******************************************************************************
* ARRAY EXPANDER
* _____________________________________________________________________________
* This program will dynamically allocate an array of a specified size.
* _____________________________________________________________________________
* INPUT
* No direct input from the user
*
* OUTPUT
* Prints the original and expanded arrays,
* showing the original values followed by zero-initialized elements.
*
******************************************************************************/
#include <iostream>
using namespace std;
int* expandArray(int *arr, int SIZE) {
// Dynamically allocate an array twice the size
int *expPtr = new int[2 * SIZE];
// Initialize elements of new array
for (int i = 0; i < 2 * SIZE; i++) {
if (i < SIZE) {
// Copy elements of the original array
*(expPtr + i) = *(arr + i);
} else {
// Initialize additional elements to 0
*(expPtr + i) = 0;
}
}
return expPtr;
}
int main() {
int SIZE = 5;
int *arr = new int[SIZE]{1, 2, 3, 4, 5};
// Print original array
cout << "Original array: ";
for (int i = 0; i < SIZE; i++) {
cout << arr[i] << " ";
}
cout << endl;
// Expand the array
int *expandedArr = expandArray(arr, SIZE);
// Print expanded array
cout << "Expanded array: ";
for (int i = 0; i < 2 * SIZE; i++) {
cout << expandedArr[i] << " ";
}
cout << endl;
// Free memory
delete[] arr;
delete[] expandedArr;
return 0;
}
Ly9NYXh3ZWxsIEJyZXdlciAgICAgICAgICAgICAgICAgQ1MxQSAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgOSwgcC4gNTM5LCAjMTEKLy8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQVJSQVkgRVhQQU5ERVIKICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogVGhpcyBwcm9ncmFtIHdpbGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgYW4gYXJyYXkgb2YgYSBzcGVjaWZpZWQgc2l6ZS4KICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogSU5QVVQKICogICBObyBkaXJlY3QgaW5wdXQgZnJvbSB0aGUgdXNlcgogKiAKICogT1VUUFVUCiAqICAgUHJpbnRzIHRoZSBvcmlnaW5hbCBhbmQgZXhwYW5kZWQgYXJyYXlzLAogKiAgIHNob3dpbmcgdGhlIG9yaWdpbmFsIHZhbHVlcyBmb2xsb3dlZCBieSB6ZXJvLWluaXRpYWxpemVkIGVsZW1lbnRzLgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50KiBleHBhbmRBcnJheShpbnQgKmFyciwgaW50IFNJWkUpIHsKICAgIC8vIER5bmFtaWNhbGx5IGFsbG9jYXRlIGFuIGFycmF5IHR3aWNlIHRoZSBzaXplCiAgICBpbnQgKmV4cFB0ciA9IG5ldyBpbnRbMiAqIFNJWkVdOwoKICAgIC8vIEluaXRpYWxpemUgZWxlbWVudHMgb2YgbmV3IGFycmF5CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDIgKiBTSVpFOyBpKyspIHsKICAgICAgICBpZiAoaSA8IFNJWkUpIHsKICAgICAgICAJCiAgICAgICAgICAgIC8vIENvcHkgZWxlbWVudHMgb2YgdGhlIG9yaWdpbmFsIGFycmF5CiAgICAgICAgICAgICooZXhwUHRyICsgaSkgPSAqKGFyciArIGkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgCQogICAgICAgICAgICAvLyBJbml0aWFsaXplIGFkZGl0aW9uYWwgZWxlbWVudHMgdG8gMAogICAgICAgICAgICAqKGV4cFB0ciArIGkpID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGV4cFB0cjsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgU0laRSA9IDU7CiAgICBpbnQgKmFyciA9IG5ldyBpbnRbU0laRV17MSwgMiwgMywgNCwgNX07CgogICAgLy8gUHJpbnQgb3JpZ2luYWwgYXJyYXkKICAgIGNvdXQgPDwgIk9yaWdpbmFsIGFycmF5OiAiOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTSVpFOyBpKyspIHsKICAgICAgICBjb3V0IDw8IGFycltpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgLy8gRXhwYW5kIHRoZSBhcnJheQogICAgaW50ICpleHBhbmRlZEFyciA9IGV4cGFuZEFycmF5KGFyciwgU0laRSk7CgogICAgLy8gUHJpbnQgZXhwYW5kZWQgYXJyYXkKICAgIGNvdXQgPDwgIkV4cGFuZGVkIGFycmF5OiAiOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyICogU0laRTsgaSsrKSB7CiAgICAgICAgY291dCA8PCBleHBhbmRlZEFycltpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgLy8gRnJlZSBtZW1vcnkKICAgIGRlbGV0ZVtdIGFycjsKICAgIGRlbGV0ZVtdIGV4cGFuZGVkQXJyOwoKICAgIHJldHVybiAwOwp9