/**************************************************************/ // R. A. Hillyard // pointer05.cpp // November 2001 // // Program to demonstrate dynamic arrays // // Create a dynamic array and then allow the user to // adjust the size of the array /**************************************************************/ #include<iostream> using namespace std; int const MinSize = 10; int main() { int *ptr1, *ptr2; //pointer to type int ptr1 = new int[MinSize]; //point to the first element of the new array int index; //index variable for counter int temp; for(index = 0; index < MinSize; index++) //assign initial values to new array { ptr1[index] = 2 * index ; }
for(index = 0; index < MinSize; index++) //print initial value of array elements { cout << ptr1[index] << " "; } cout << "\n\nArray is now "<< MinSize << ": Enter new size >"; cin >> temp;
//save referance to array ptr2 = ptr1; //ptr2 now points to the first element of the array
ptr1 = new int[temp]; //now create array of new size if(temp > MinSize) //If new array is larger than MinSize { for(index = 0; index < MinSize; index++) //copy all elements of the old array { ptr1[index] = ptr2[index]; }
for(index = MinSize; index < temp; index++) //ask for the rest of the elements { cout << "enter an int >"; cin >> ptr1[index]; }
delete [] ptr2; //give back the memory
for(index = 0; index < temp; index++) //print new value of array elements { cout << ptr1[index] << " "; } cout << endl; }//end if else //new size smaller than old { for(index = 0; index < temp; index++) //copy the first temp elements of the array { ptr1[index] = ptr2[index]; }
delete [] ptr2; //give back the memory
for(index = 0; index < temp; index++) //print new value of array elements { cout << ptr1[index] << " "; } cout << endl; }//end else } /***********************Program Output*************************/ 0 2 4 6 8 10 12 14 16 18 Array is now 10: Enter new size >13 enter an int >5 enter an int >87 enter an int >22 0 2 4 6 8 10 12 14 16 18 5 87 22 /************************Second Run****************************/ 0 2 4 6 8 10 12 14 16 18 Array is now 10: Enter new size >7 0 2 4 6 8 10 12