Logo Hardware.com.br
gabriel04
gabriel04 Novo Membro Registrado
4 Mensagens 0 Curtidas

Passagem por referencia imprimindo lixo no vetor

#1 Por gabriel04 05/06/2017 - 01:05
Galera fiz um código simples porém estou com um problema. Fiz uma função "aumentar" para incrementar o tamanho de um vetor; A função recebe o vetor e passa os valores desse vetor para um vetor auxiliar. Assim posso deletar o vetor, alocar o novo tamanho e recuperar os valores dela pq foram salvos no vetor aux. O problema é que ele ta imprimindo lixo. Se eu imprimir o vetor dentro da função sai tudo certo mas na main sai errado. Alguém pode ajudar?

#include<iostream>
using namespace std;

void aumentar(int *vetor, int tam){
int *aux, i;

aux= new int[tam];

for(i=0; i<tam; i++){
aux[i]=vetor[i];
}

cout<<"aux:"<<endl;
for(i=0; i<tam; i++){
cout<<aux[i]<<" ";
}
cout<<endl;

delete []vetor;

vetor = new int[11];

for(i=0; i<tam; i++){
vetor[i]=aux[i];
}

vetor[tam]=10;

for(i=0; i<11; i++){
cout<<vetor[i]<<" ";
}
cout<<endl;

}

int main(){
int *vetor, i;

vetor = new int[10];

for(i=0; i<10; i++){
vetor[i]=i;
}

for(i=0; i<10; i++){
cout<<vetor[i]<<" ";
}
cout<<endl;

aumentar(vetor,10);

cout<<"Resultado"<<endl;

for(i=0; i<11; i++){
cout<<vetor[i]<<" ";
}
cout<<endl;

}
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
05/06/2017 - 03:34
Erros:
1) O método main() exige retorno (veja seu tipo int)
2) "vetor" no main() deverá receber o seu novo valor:
vetor = aumentar(vetor,10);

3) Sendo assim, aumentar() deixará de ser "void"
4) aumentar() precisa retornar "vetor"
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal