Так у меня есть этот код, но он не выводит, после добавления 4-го значения, правильный материал, это как все это будет удален, и это не будет не добавляется до следующего запускаДобавление значений динамического массива
#include <iostream>
using namespace std;
const int DEFAULT_CAPACITY = 2;
void addValue(int data[], int& logSize, int& physSize, int newValue)
{
// DATA DICTIONARY
int *temp;
if (logSize == physSize)
{
physSize *= 2;
temp = new int[physSize];
for (int i = 0; i <= logSize; i++)
{
temp[i] = data[i];
cout<<temp[i]<<endl;
}
delete [] data;
data = temp;
}
data[logSize] = newValue;
for (int i = 0; i <= logSize; i++)
{
cout<<data[i]<<endl;
}
logSize++;
}
void printData(int data[], int logSize)
{
cout<<endl;
cout<<"ARRAY DATA:"<<endl;
for (int i = 0; i < logSize; i++)
{
cout<<data[i]<<endl;
}
}
void main()
{
//DATA DICTIONARY
int *data;
int logSize;
int physSize;
int newValue;
char choice;
physSize = DEFAULT_CAPACITY;
logSize = 0;
data = new int[physSize];
do
{
cout<<"What would you like to do?"<<endl;
cout<<"(A)dd value to array"<<endl;
cout<<"(D)isplay all values"<<endl;
cout<<"(Q)uit"<<endl;
cin>>choice;
if (choice == 'A' || choice == 'a')
{
cout<<"What integer do you want to add? ";
cin>>newValue;
addValue(data, logSize, physSize, newValue);
}
if (choice == 'D' || choice == 'd')
{
printData(data, logSize);
}
cout<<endl;
} while (choice != 'Q' && choice != 'q');
}
Использование [std :: vector] (http://www.cplusplus.com/reference/vector/vector/). Передача аргументов C++ часто [pass by value] (http://en.wikipedia.org/wiki/Pass-by-value), если вы явно не используете ссылки (и вы не можете иметь ссылки на массивы) –
@BasileStarynkevitch - это для назначения, не может использовать на нем векторы. – cb1295
В чем именно вопрос? Можете ли вы немного подробнее рассказать о том, что происходит? Предоставьте базовый выход и т. Д. – Durandal