#include <iostream>

using namespace std;

class VetorDinamico{
int tam;
int posLivre;
int *vet;
public:
// Métodos a serem criados
// - construtora: deve alocar o vetor com um tamnho inicial, passado
// como parâmetro.
// - adiciona: coloca um dado no vetor. Se noa houver
// mais espaço, deve alocar um novo vetor
// - qtdDados: deve informar o número de dados inseridos no vetor
// - getDado(i): deve informar o valor do dado 'i'

VetorDinamico(int t)
{
posLivre=
0;
tam = t;
vet =
new int[t];
}
void adiciona(int dado)
{
int *temp;
if(posLivre < tam)
{
vet[posLivre] = dado;
posLivre++;
}
else{
cout << endl <<
"...alocando mais espaco no vetor" << endl;
temp =
new int[tam+3];// cria uma nova área
for(int i=0; i< tam; i++)
{
// copia os dados para a nova área
temp[i] = vet[i];
}
delete vet; // libera a área antiga
vet = temp; // faz o vet apontar para nova área
tam = tam + 3;
vet[posLivre] = dado;
posLivre++;
}
}
int qtdDados()
{
return posLivre;
}
int getDado(int i)
{
return vet[i];
}
};

int main()
{

VetorDinamico V1(
5);
int dado;

do{
cout <<
"Digite um valor (maior que zero) para ser armazenado no vetor:";
cin >> dado;
if (dado>0)
V1.adiciona(dado);
else break;
}
while (1);

cout << endl <<
"Dados digitados:" << endl;
for(int i=0; i< V1.qtdDados(); i++)
{
cout << V1.getDado(i) << endl;
}
system (
"pause");
}