Tengo que invertir un vector en c

publicado por: Anonymous

Buenas! Estoy empezando a programar en pseudocodigo similar a C y me dieron un ejercicio que realmente me esta costando mucho…
la consigna es:
Invertir un arreglo de 30 números enteros ingresados por teclado.(no puedo usar metodos de ordenamiento como burbujero, por ejemplo)
Ya cree el vector y la carga, pero la parte de invertirlos es la que no puedo sacar…
Alguien me puede dar una ayudita? Gracias!

int v[30]; // creo el vector
int aux; // creo un auxiliar
int cont=0; // creo el contador

while(cont < 30) { //cargo las 30 posiciones del vector
scanf("%d", &aux)
v[cont] = aux
cont++
}

solución

La alternativa mas sencilla creo yo es que hagas una operación swap. Para ello requieres de un bucle y una variable temporal

int temp;

La operación consiste en ir elemento por elemento a través del arreglo (hasta la mitad) y hacer un intercambio entre el elemento i-ésimo y el elemento TAMAÑO – i, usando una variable temporal para no perder el valor al hacer dicho intercambio.

El programa se verá así:

int v[30]; // creo el vector
int aux; // creo un auxiliar
int temp; //variable temporal
int cont=0; // creo el contador

//ENTRADA DE DATOS
while(cont < 30) { //cargo las 30 posiciones del vector
    scanf("%d", &aux)
    v[cont] = aux
    cont++
}

//SWAP
cont = 0;
while(cont < 30/2)
{
    temp = v[cont];
    v[cont] = v[30 - 1 - cont];
    v[30 - 1 - cont] = temp;
    cont++;
}

La variable temporal es necesaria porque si hiciéramos lo siguiente:

   v[cont] = v[30 - 1 - cont];
   v[30 - 1 - cont] = v[cont];

Perderíamos por siempre el valor de v[cont]

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *