intercambio de posicion en un arreglo en C

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
AlfonsoCruz
Mensajes: 4
Registrado: 11/01/2019 10:08 pm

intercambio de posicion en un arreglo en C

#1 Mensaje por AlfonsoCruz » 12/01/2019 9:09 am

Hola, necesito ayuda, necesito implementar un metodo el cual me cambie de posicion elementos que esten dentro del arreglo, }

ejemplo:
creo el array con 5 posiciones,ahora con numeros aleatorios son llenados estas posiciones, despues me crea los siguientes numeros:
0 1 2 3 ->Posiciones
[2][3][4][5] ->elementos generados:

ahora quiero cambiar de el valor de la posicion 2, a la posicion 0, y el valor de la posicion 0 cambie a la posicion 2; ¿Como puedo implementar este metodo?

asi debe quedar en codigo.
0 1 2 3 ->Posiciones
[4][3][2][5] ->elementos generados:

mollok
Mensajes: 351
Registrado: 30/01/2018 9:47 am
Ubicación: Mallorca, España

Re: intercambio de posicion en un arreglo en C

#2 Mensaje por mollok » 12/01/2019 11:43 am

El algoritmo más sencillo para cambiar dos valores es:
Supongamos que tenemos
a = 1
b = 2

Entonces creas una variable auxiliar aux

Código: Seleccionar todo

aux = a;
a = b;
b = aux;
Terminado esto tenemos que
a = 2
b = 1
while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}

Avatar de Usuario
cheroky
Mensajes: 2571
Registrado: 22/09/2005 11:00 pm
Ubicación: Valladolid (España)

Re: intercambio de posicion en un arreglo en C

#3 Mensaje por cheroky » 15/01/2019 12:45 am

Hola.

Otra opción para (a priori) tipos enteros es utilizar el algoritmo xor-swap, aquí mediante una macro.

Código: Seleccionar todo

#include <stdio.h>

#define SWAP(a, b) ((a)^=(b), (b)^=(a), (a)^=(b))

int main()
{

    int a =  111;
    int b =  222;
    
    printf("a = %d, b = %d\n", a, b);

    SWAP(a, b);

    printf("a = %d, b = %d\n", a, b);   
   
    return 0;
}


pero en general es más eficiente el algoritmo clásico de variable respaldo.


∙∃0ƒ∙
Imagen

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 14 invitados