Ciao,
non sò se possa esserti realmente d'aiuto ma ti consiglio di dare un sguardo a questo link:
È vero che tratta di ordinamento degli array ma magari ti fà venire qualche idea su come manipolare gli array e come spostare i valori a seconda del verificarsi di una data condizione.
Altrimenti potresti utilizzare un medoto più spartano ( e meno efficace in quando devi creare la copia di un valore, occupando più memoria e quindi allungando il tempo dell'esecuzione).
Ovvero potresti, supponendo di avere l'array a[3][3] e dovendo modificare il 2d "a[2]":
-verificatasi la condizione "sposta a sinistra":
copio il valore di a[2][1] in una char b; (volendo potresti copiare a[2][2] ma in questo modo sia per sx che dx i valori sono uguali)
sovrascrivo a[2][1] con il valore di a[2][2]
azzero a[2][2] (= ' ')
sovrascrivo a[2][0] con il valore di b (copia di ex a[2][1])
-verificatasi la condizione "sposta a destra": idem ma all'inverso.
Ho preparato un piccolo programmino per mostrarti quando detto (scritto e testato su linux comunque dovrebbe essere ansi-c).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Usage %s -sx|-dx\n", argv[0]);
exit(EXIT_SUCCESS);
}
char a[3][3] = {{ 'a', 'b', 'c'},
{ 'd', 'e', 'f'},
{ 'g', 'h', 'i'}};
printf("ora a[2][0] vale -> %c\n", a[2][0]);
printf("ora a[2][1] vale -> %c\n", a[2][1]);
printf("ora a[2][2] vale -> %c\n", a[2][2]);
if (strcmp("-sx", argv[1]) == 0)
{
printf("-- sposto verso sinistra di una posizione --\n");
char b = a[2][1]; // creo una copia del valore
a[2][1] = a[2][2];
a[2][2] = ' ';
a[2][0] = b; // contiene "h"
}
else if (strcmp("-dx", argv[1]) == 0)
{
printf("-- sposto verso destra di una posizione --\n");
char b = a[2][1]; // creo una copia del valore
a[2][1] = a[2][0];
a[2][2] = b;
a[2][0] = ' ';
}
printf("ora a[2][0] vale -> %c\n", a[2][0]);
printf("ora a[2][1] vale -> %c\n", a[2][1]);
printf("ora a[2][2] vale -> %c\n", a[2][2]);
return 0;
}
Bene, ricorda che la copia di un valore andrebbe evitata ma attualmente il metodo più facile che mi è venuto in mente è questo, gli algoritmi del link sopra evitano la copia ma hanno il "difetto" che su grande mola di dati tendono ad inchiodarsi (ovviamente).
nel tuo caso quindi farei un semplice:
per sx
a[6][2] = a[6][3];
a[6][3] = ' ';
e per spostare a dx cambiando i valori della colonna.
Non mi dilungo oltre, se servono chiarimenti risponderò quanto prima, ricordando che comunque non è il metodo più efficace o elegante del mondo, ma tant'è che funziona e in piccoli programmini che non richiedono una particolare ottimizzazione può andare...
Ciao ciao!
PS. visto solo ora la data del post LOL, magari non leggerai nemmeno questa mia risposta, oramai comuqnue è postato. Magari tra un po' di tempo lo userò come promemoria.