Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MiiGii

#1
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