#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");
}