Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[VB.NET] Problema con lo spostamento di elementi in un array
martedì 22 marzo 2011 - 09.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
VB.NET
|
.NET 2.0
|
.NET 3.0
|
.NET 3.5
|
.NET 4.0
|
Windows 7
|
Windows Vista
|
Windows XP
|
Visual Studio 2010
|
Visual Studio 2008
|
Visual Studio 2005
drew
Profilo
| Newbie
6
messaggi | Data Invio:
mar 22 mar 2011 - 09:14
Ciao,
Ho riscontrato difficoltà nello spostare elementi di un array secondo un determinato schema.
Ecco l'obiettivo del codice:
arrayi= {1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5}
Spostare elementi dell'array per ottenere questo:
arrayf= {1,2,3,4,5,5,1,2,3,4,4,5,1,2,3,3,4,5,1,2,2,3,4,5,1}
In pratica:
12345 12345
12345 51234
12345 -> 45123
12345 34512
12345 23451
Ovviamente questo è solo un esempio, il codice deve poter dare lo stesso risultato con un qualsialsi numero n di elementi dell'array(n quadrato perfetto). Ho provato molte volte, ma non sono ci sono riuscito.
Grazie in anticipo per qualsialsi aiuto.
niccord
Profilo
| Newbie
12
messaggi | Data Invio:
mar 22 mar 2011 - 09:43
Conosci il numero di elementi dell'array (arrayi.Length) quindi conosci anche se è un quadrato perfetto e qual è la sua radice (Math.Sqrt).
Io suddividerei l'array principale in Math.Sqrt(arrayi.Length) array diversi (5 array di 5 elementi, nel tuo esempio) e in ognuno applicherei lo shift di x posizioni, con x che ogni volta si incrementa.
drew
Profilo
| Newbie
6
messaggi | Data Invio:
mar 22 mar 2011 - 09:49
La tua soluzione è giusta, ma con un numero di elementi molto grande come 100000, dovrei creare circa 300 array, con un allocazione di memora troppo grande. Devo cercare di operare solo su di un array.
niccord
Profilo
| Newbie
12
messaggi | Data Invio:
mar 22 mar 2011 - 09:57
Giusto. Usa due interi che identifichino la prima e l'ultima posizione in cui intendi agire e shifta i valori nell'array all'interno delle posizioni. Ad esempio:
int numeroSottoArray = Math.Sqrt(arrayi.Lentgh);
for (int i = 0; i < numeroSottoArray; i++)
{
int primaPos = numeroSottoArray * i;
int ultimaPos = (numeroSottoArray * (i + 1)) - 1;
shiftElementi(arrayi, primaPos, ultimaPos, i);
}
shiftElementi è la funzione che shifta (con riporto) gli elementi dell'array (i è il numero di spostamenti che bisogna fare nell'array)
drew
Profilo
| Newbie
6
messaggi | Data Invio:
mar 22 mar 2011 - 10:04
Questa è la soluzione che cercavo, ma la funzione shiftElementi la devo creare io?
niccord
Profilo
| Newbie
12
messaggi | Data Invio:
mar 22 mar 2011 - 10:45
Certamente
drew
Profilo
| Newbie
6
messaggi | Data Invio:
mar 22 mar 2011 - 10:57
Va bene, grazie mille.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !