elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mover posiciones de un array como si fuese una excavadora
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mover posiciones de un array como si fuese una excavadora  (Leído 2,878 veces)
Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Mover posiciones de un array como si fuese una excavadora
« en: 19 Enero 2017, 11:48 am »

Buenas,
Como puedo hacer para dada una posicion inicial de un array me mueva los elementos de la derecha hasta el primer 0 una posicion??


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Mover posiciones de un array como si fuese una excavadora
« Respuesta #1 en: 19 Enero 2017, 12:20 pm »

No entendí lo que quieres hacer.


En línea

Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Mover posiciones de un array como si fuese una excavadora
« Respuesta #2 en: 19 Enero 2017, 14:34 pm »

Te pongo un ejemplo:
Tengo un array en el que en sus posiciones tengo numeros de este modo:
|0|1|2|0|5|7|0| -> Elementos del array
------------------
|0|1|2|3|4|5|6| -> Numero de las posiciones del array

Entonces, considerando que si el elemento es 0, la posicion esta "libre", pido la posicion donde esta un elemento al usuario, el usuario introduce por ejemplo la posicion 1, entonces tengo que hacer que el 1 se mueva una posicion a la derecha, pero como esta el 2 al lado, el 2 se mueve a la derecha y como despues hay un 0, termina de moverse quedando los elementos asi:
|0|0|1|2|5|7|0|
En línea

MiiGii

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Mover posiciones de un array como si fuese una excavadora
« Respuesta #3 en: 19 Enero 2017, 14:50 pm »

El programa que pides sería algo así, suponiendo un array estático y un delimitador del array también estático que sea N...

int array_estatico[ N ];
int N;

void desplazar(int posicion) {
    int auxiliar = 0;
    for (int i = posicion; i < N ; i++) {
        if (array_estatico [ i ] ==0) {
             if (auxiliar!=0) array_estatico [ i ] = auxiliar;
             return;
        }
        if (auxiliar!=0) {
            int auxiliar2 = array_estatico [ i ] ;
            array_estatico [ i ] = auxiliar;
            auxiliar = auxiliar2;
        }
        else {
            auxiliar = array_estatico [ i ] ;
            array_estatico [ i ] = 0;
        }
    }
}

Básicamente dandonos una posición por la que empezar, iteramos a partir de dicha posición hasta encontrar un cero dentro del array.
En cada iteración, si el elemento del array en la posición es cero salimos, si no, utilizamos un registro auxiliar que nos diga si el elemento anterior se tiene en cuenta, de manera que si es así, intercambiaremos el valor del entero auxiliar con el valor del array en ese indice.
Si no es así nos encontramos en la primera iteración por lo que simplemente inicializaremos el valor del registro auxiliar con el valor asociado a la posición del array estableceremos esa posición del array a cero.

Espero te sirva de ayuda
« Última modificación: 19 Enero 2017, 14:55 pm por MiiGii » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
limitar numero de lineas que caben en un JTextPane, como si fuese una shell
Java
kinos 6 7,890 Último mensaje 12 Agosto 2009, 02:05 am
por kinos
Eliminar las posiciones pares de un array y comprimir el array
Java
sevedeboa 8 15,399 Último mensaje 26 Enero 2015, 15:52 pm
por sevedeboa
Vectores (Array) de N posiciones C++
Programación C/C++
iAmChapin_ 6 7,606 Último mensaje 10 Septiembre 2015, 02:03 am
por someRandomCode
Sería posible que el Big Bang fuese algo así como esto? « 1 2 »
Foro Libre
RevolucionVegana 15 6,646 Último mensaje 12 Noviembre 2016, 10:36 am
por Orubatosu
[C]: Scanf punteros (como si fuese P[i][j])
Programación C/C++
andie13 3 2,996 Último mensaje 18 Diciembre 2016, 00:21 am
por andie13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines