PDA

View Full Version : array[c]


sertor185
05-05-2008, 15:32
ho un problema:
dato un array di n elementi ordinato [1, 2,.... n] voglio un programma che esegua uno shift di n posizioni ad esmpio per ottenere un array del tipo
[3,4...1,2]...sapete aiutarmi?
si puo' fare riorsivamente?
scusate ma sono inesperto!!!

Furla
05-05-2008, 18:12
in genere per lavorare sugli array un approccio iterativo č pių intuitivo di uno ricorsivo, pių adatto invece per liste ed alberi; mi sembra che il tuo caso non faccia eccezione. considera che essendo una rotazione (pių che uno shift un ring-shift) dovrai per forza salvarti temporaneamente un elemento all'inizio per poi sistemarlo alla fine.


void fun(int* a, int n, int pos)
{
int temp=a[0];
while (n--)
a[(n+pos)%n]=a[n];
a[p%n]=temp;
}

EDIT: scusate ma nello spoiler non accetta l'invio, comunque il codice č semplice e comprensibile :D