winterwake
06-09-2008, 16:37
Buongiorno, dopo attenta analisi e conseguente emicrania non capisco dove abbia sbagliato mi vedo costretto a importunare gente con problemi più seri... vogliate perdonarmi. Dunque, il codice è il seguente
int f=0,g=0,h=0,e=0;
for(g=0; g<8; g++)
{for (h=1; h<limiti[g]+1; h++)
{scambio = LimitiComplex[h][g];
for(e=0; e<scambio; e++) app[e] = ProComplex[h][g][e];
for (f=h-1; (f>=0) && (ProComplex[f][g][0] > app[0]); f--)
{
for(e=0; e<scambio; e++) ProComplex[f+1][g][e] = ProComplex[f][g][e];
LimitiComplex[f+1][g]=LimitiComplex[f][g];
}
for(e=0; e<scambio; e++) ProComplex[f+1][g][e] = app[e];
LimitiComplex[f+1][g]=scambio;
}
}
Il problema è il seguente. ProComplex è una matrice 10x8x15, che però presenta un inconveniente, oltre alle colonne (8) gli altri due valori sono variabili (fra 8 e 10 e fra 12 e 15). Per non mettere in piedi un discorso di liste, visto che al più spreco un ventina di posti nel caso peggiore, ho scelto la matrice.
Il vettore limiti è un vettore di 8 posizioni che contiene il numero di righe di ciascuna dimensione, mentre LimitiComplex è una matrice 8x10 contiene il numero di elementi in profondità.
Quello che devo fare è semplice. Devo ordinare la matrice lungo le righe, rispetto al valore in testa. L'idea è di usare l'insertion sort su ogni colonna e avere la matrice formattata come mi serve. Inoltre, non basta ordinare la matrice, ma devo anche aggiornare LimitiComplex, in quanto spostando fra di loro le profondità devo anche riposizionare i corretti limiti di profondità.
Sfortunatamente il codice che ho scritto non lo fa. E nonostante abbia seguito passo passo diversi debug, non sono venuto a capo del perchè i limiti alla fine non corrispondono più.
Se qualcuno volesse provare a capire il mio codice e illuminarmi sul dove sbaglio avrebbe eterna riconoscenza!
Grazie!!!
int f=0,g=0,h=0,e=0;
for(g=0; g<8; g++)
{for (h=1; h<limiti[g]+1; h++)
{scambio = LimitiComplex[h][g];
for(e=0; e<scambio; e++) app[e] = ProComplex[h][g][e];
for (f=h-1; (f>=0) && (ProComplex[f][g][0] > app[0]); f--)
{
for(e=0; e<scambio; e++) ProComplex[f+1][g][e] = ProComplex[f][g][e];
LimitiComplex[f+1][g]=LimitiComplex[f][g];
}
for(e=0; e<scambio; e++) ProComplex[f+1][g][e] = app[e];
LimitiComplex[f+1][g]=scambio;
}
}
Il problema è il seguente. ProComplex è una matrice 10x8x15, che però presenta un inconveniente, oltre alle colonne (8) gli altri due valori sono variabili (fra 8 e 10 e fra 12 e 15). Per non mettere in piedi un discorso di liste, visto che al più spreco un ventina di posti nel caso peggiore, ho scelto la matrice.
Il vettore limiti è un vettore di 8 posizioni che contiene il numero di righe di ciascuna dimensione, mentre LimitiComplex è una matrice 8x10 contiene il numero di elementi in profondità.
Quello che devo fare è semplice. Devo ordinare la matrice lungo le righe, rispetto al valore in testa. L'idea è di usare l'insertion sort su ogni colonna e avere la matrice formattata come mi serve. Inoltre, non basta ordinare la matrice, ma devo anche aggiornare LimitiComplex, in quanto spostando fra di loro le profondità devo anche riposizionare i corretti limiti di profondità.
Sfortunatamente il codice che ho scritto non lo fa. E nonostante abbia seguito passo passo diversi debug, non sono venuto a capo del perchè i limiti alla fine non corrispondono più.
Se qualcuno volesse provare a capire il mio codice e illuminarmi sul dove sbaglio avrebbe eterna riconoscenza!
Grazie!!!