PDA

Visualizza la versione completa : [C] Fusione di matrici


andry85
02-10-2007, 19:31
Devo generalizzare un algoritmo che fonde due vettori, per le matrici.

In pratica ho due vettori di stringhe, ciascuno ordinato, e devo produrre un terzo vettore di uscita che sia l'unione degli altri due, mantenendo però l'ordinamento.
Un algoritmo dice di usare un indice per ogni vettore, quindi 3 indici(i j k), dopodichè, con un ciclo, confronto i valori vett1[i] e vett2[j], il piu piccolo viene copiato in vettu[k]. A questo punto incremento i se ho copiato vett[i] oppure incremento j se ho copiato vett2[j]. Il ciclo termina quando uno dei due vettori arriva alla fine. Successivamente copio tutti gli elementi del vettore che rimangono da copiare.

Con le matrici potrei considerare tanti vettori quante sono le righe della matrice. Il problema però è che non riesco a capire come faccio a tenere tanti indici quante sono le righe della matrice. La matrice ha dimensione non nota a priori.

Spero di essere stato chiaro, grazie per i consigli.

oregon
02-10-2007, 21:34
Perche' devi usare delle matrici?

Il problema non era quello relativo a 3 vettori?

andry85
03-10-2007, 00:25
Perchè nel mio caso ho una matrice di stringhe.

oregon
03-10-2007, 01:49
Quindi hai una matrice di 3 righe, in cui ogni riga e' uno dei vettori di cui parli ...

Hai scritto del codice o no?

andry85
03-10-2007, 10:35
Il fatto è che le righe della matrice non sono note a priori, quindi non conosco con quanti vettori di stringhe ho a che fare. E' qui che mi sono bloccato, secondo l'algoritmo infatti, dovrei tenere un indice per ogni vettore, ma come faccio se non so a priori con quante righe sto lavorando? Infatti la matrice è allocata in modo dinamico.

oregon
03-10-2007, 10:41
L'allocazione, seppur dinamica, viene effettuata con delle variabili che contengono il numero di righe e di colonne (le dovrai pur sapere per allocare la matrice ...).

Devi quindi usare il valore di queste variabili.

In realta', non ho capito molto del tuo problema, perche' non comprendo cosa c'entri la fusione dei vettori (che e' un problema specifico che puoi risolvere con una funzione che accetti i corretti parametri e svolga tutto il lavoro) e l'allocazione della tua matrice ...

andry85
03-10-2007, 14:00
Allora se io considero ogni riga della matrice come un vettore di stringhe, devo usare tanti indici quanti sono i vettori e quindi le righe della matrice. Se sapessi che la matrice ha 3 righe, allora uso tre indici i, j e k ad esempio. Ma io durante l'esecuzione so quante righe ha la matrice ed a quel punto dovrei dichiarare tanti indici quante sono le righe, ma è una cosa che non è possibile fare. Spero di essere stato chiaro adesso :)

oregon
03-10-2007, 14:27
Originariamente inviato da andry85
... dovrei dichiarare tanti indici quante sono le righe, ma è una cosa che non è possibile fare ...

E perche' non e' possibile?

Tu puoi allocare dinamicamente un "vettore di indici"

i[r]

ed usarli ...

Loading