int tam ,num ,i ,vec[30]; // El arreglo inverso sobraria al igual que la variable num
// en la parte para imprimir el arreglo de manera inversa solo bastaria hacerlo asi
for(i=tam-1 ; i>=0 ; i--)
{
cout << vec[i] << " ";
}
Lo unico es que tu programa no puede ingresar mas de 30 valores, ya lo has declarado...
int vec[30].... Cambialo para que se del tamano que el usuario quiera....Si el usuario ingresa no mas 5 valores, los otros 25 valores del arreglo sobran y eso ocupa memoria.
Por ejemplo:
tamanio es 5 ==> vec[5] ==> ocupa 20 bytes
tamanio es 30 ==> vec[30] ==> ocupa 120 bytes
Nota: En verdad no se ha invertido el arreglo solo lo imprimi de atras hacia adelante.
Para invertirlo y que quede guardado, debes usar una variable auxiliar, y el for
Lo haces hasta la mitad de los elementos, si el # de elementos es
impar. En este caso de que sea par, el elemento del medio no se toma.
for(int i=0 ; i<TAM/2 ; i++)
{
auxi = vec[i]; // Variable auxiliar
vec[i] = vec[TAM-i-1]; // intercambio de los primeros por los ultimos
vec[TAM-i-1] = auxi; // intercambio de los ultimos por los primeros
}
EDITADO: Para que no tenga problemas con la reglas del subforo, por poner codigo compilable.