Invertir un vector

Iniciado por bryanrz96, 2 Diciembre 2015, 21:10 PM

0 Miembros y 1 Visitante están viendo este tema.

bryanrz96

Hola, quisiera si mi programa cumple con lo que me pide el prof.

Crear un programa que pide en input al cliente la dimension del vector de enteros, crea el vector y lo llena con numeros del 1 hasta la dimension ingresada. Una vez que tengo el vector este debe ser pasado a una funcion que invierte el orden.
y aqui mi codigo, no se si cumple con lo que dice y como estructura esta bien???
Gracias
Código (cpp) [Seleccionar]
int main()
{
  int dim;

  cout << "Inserisci la dimensione del vettore:" << endl;
  cin >> dim; // Supongamos que ingrese 10
  int vettore[dim]; // mi vector es de tamagno 10
  cout<<"Vettore Iniziale:"<<endl;

  for(int i=1; i<=dim; i++){
    vettore[i] = i * 1;

    cout << vettore[i] << endl;

  }
    cout<<"Vettore Invertito:"<<endl;
    for(int i=dim; i>0; i--){
    cout<<vettore[i]<<" ";
    cout<<endl;
        }
  }



Zodiak98

Una cosa, cuando estás dándole los valores al arreglo, te estás comiendo la posición 0, y además que estás pasándote de su tamaño con el "<=", y multiplicar por 1 no tiene ningún sentido. Lo corregí por ti, sería de esta forma:
Código (cpp) [Seleccionar]

for(int i = 0; i < dim; i++){
       vettore[i] = i + 1;
}


Y para invertirlo, una manera fácil que puedes usar es a través de un arreglo auxiliar, recorrerás del vector original la última posición y se la asignarás a la primera posición de ese arreglo auxiliar, y así sucesivamente hasta llegar a la posición 0 del arreglo original, y la última del arreglo auxiliar. Y luego lo que haces es igualar el vector original a cada uno de los valores del vector auxiliar para que el original sea modificado.
Lo harías así:
Código (cpp) [Seleccionar]

void invertir(int vettore[], int tam) {
   int vAux[tam]; //Arreglo auxiliar.
   int aux = 0; //Contador auxiliar para desplazarnos por vAux.

   //Llenando el arreglo auxiliar con los valores invertidos.
   for(int i = tam - 1; i >= 0; --i, ++aux) {
       vAux[aux] = vettore[i];
   }

   //Asignándole al arreglo original los valores del arreglo invertido.
   for(int i = 0; i < tam; ++i) {
       vettore[i] = vAux[i];
   }
}


Y ya sólo muestras el arreglo invertido.