Я делаю программу для Dynami c Array, где я реализовал три метода. push_back (arguments ...), pop_back (arguments ...) и printArray (arguments ...).
Но когда я увеличиваю размер массива, он дает значение мусора по этому индексу, и если я запустите код для более чем 15 значений, он перестает работать.
#include<iostream>
using namespace std;
void push_back(unsigned int value,unsigned int *array,int &arraySize,int &totalArrayItems ){
if(arraySize>totalArrayItems){
array[totalArrayItems]=value;
totalArrayItems=totalArrayItems+1;
cout<<"Current size: "<<arraySize<<endl;
}
else if(arraySize==totalArrayItems){
cout<<"Adding the Size of Array... \n";
unsigned int *tempArray=new unsigned int[arraySize+5];//making new array as asked in requirements
for(int i=0;i<arraySize;i++){
tempArray[i]=array[i];
cout<<"Value in Temp : "<<tempArray[i]<<endl;
}
unsigned int *temp=array;
array=tempArray;
arraySize=arraySize+5;
cout<<"Saving "<<value<<" at Position: "<<totalArrayItems<<endl;
array[totalArrayItems]=value;//adding the new value
cout<<"Value in Temp "<<totalArrayItems<<" : "<<tempArray[totalArrayItems]<<endl;
totalArrayItems=totalArrayItems+1;
cout<<"Updated size: "<<arraySize<<"Current value: "<<value<<endl;
delete []temp;//delete old array
}
}
void pop_back(unsigned int *array,int &arraySize,int &totalArrayItems){
if(totalArrayItems>0){
totalArrayItems=totalArrayItems-1;
if(totalArrayItems<(arraySize-5)){
unsigned int *tempArray=new unsigned int[arraySize-5];
for(int i=0;i <= totalArrayItems;i++){
tempArray[i]=array[i];
}
unsigned int *temp=array;
array=tempArray;
delete[] temp;
arraySize=arraySize-5;
}
}
}
void printArray(unsigned int *array,int totalArrayItems){
for(int i=0;i<totalArrayItems;i++){
cout<<"Value at "<<i<<" : "<<array[i]<<endl;
}
}