Preciso criar uma função em c++ que recebe um vetor de inteiros(usando memoria dinamica), como parametro e inverta a ordem dos elementos, alterando o original que foi passado como argumento. O parâmetro formal da função que corresponde ao vetor que deve ser invertido tem que ser um ponteiro simples. Faça uma função em C++ chamada inverteVetor que recebe um vetor de inteiros (utilizando memória dinâmica) como parâmetro e inverte a ordem dos seus elementos, alterando o vetor original passado como argumento. O parâmetro formal da função correspondente ao vetor a ser invertido deve ser um ponteiro simples. O problema é que tenho que utilizar aritmética de ponteiros para percorrer o vetor, o prof não chegou a explicar e não consegui entender bem por conta.
No fim a função tem que ser implementada de um jeito que não precise usar um vetor auxiliar e nem percorrer todos os elementos do vetor original.
A função inverteVetor deve obedecer o seguinte protótipo:
void inverteVetor(int *piVet, const int tam);
onde piVet é o ponteiro para o vetor a ser invertido e tam é o tamanho do mesmo.
No fim, meu código ficou assim:
OBS: usei o New porque no final de tudo os vetores tem que ser deletados.
#include <iostream>
using namespace std;
void inverteVetor(int *piVet, const int tam);
int main(int argc, char const *argv[]) {
int vet[] = {1, 2, 3, 4, 5, 6, 7};
for (int i = 0; i < 7; i++) {
cout << vet[i] << endl;
}
cout << "Vetor invertido: " << endl;
inverteVetor(vet, 7);
for (int i = 0; i < 7; i++) {
cout << vet[i] << endl;
}
delete []vet;
}
void inverteVetor(int *p, const int tam) {
int aux;
int tamanho = tam-1;
for (int i = 0; i < tam/2; i++){
aux = p[i];
p[i] = p[tamanho];
p[tamanho] = aux;
tamanho --;
}
}
Funciona, mas não é para ser desse jeito. Alguém pode me ajudar e tentar me explicar? Tentei pedir ajuda para um colega que já pagou essa disciplina, mas ele me disse que nunca tinha usado isso e no fim não deu em nada.
