PDA

Visualizza la versione completa : [C++] Confronto tra file


program
12-07-2011, 13:35
Ciao a tutti,
ho il seguente problema:

ho due file .txt con all'interno dei dati in 2 colonne, n righe;

voglio vedere se, dato un dato del primo file, nella colonna 1 alla riga m-esima, se tale dato c'è anche nella prima colonna del secondo file e riportare i relativi valori delle seconde colonne. Ossia, per esempio:

file1.txt
1 a
2 b
3 c
4 d

file2.txt
5 m
6 g
2 k
1 s

file_out.txt
1 a s
2 b k

Quello che faccio io è dire:
prendi il primo elemento del file1.txt della prima colonna, scorri il file2.txt e se c'è scrivi in file_out.txt
poi passa al secondo, scorri di nuovo tutto file2.txt e cosi via.

Ora, il programma funziona ma, se i dati sono tanti, ci mette molto tempo per girare.


Conoscete un modo più furbo per fare tutto ciò?

Grazie

oregon
12-07-2011, 13:37
Potresti caricare il secondo file in memoria, in un array, e fare i controlli senza la necessità di aprirlo/scorrerlo/chiuderlo continuamente.

program
13-07-2011, 16:31
Hai ragione,

in effetti è la soluzione più ovvia, immediata e di ottima resa:
ora gira in 30 secondi al posto che 42 minuti.


Grazie mille.

oregon
13-07-2011, 16:36
Originariamente inviato da program
ora gira in 30 secondi al posto che 42 minuti.

Beh ... c'è differenza ... :D



Grazie mille.

Di nulla.

valia
13-07-2011, 17:23
teoricamente potrebbe caricare entrambi su una mappa (accesso rapido quindi) e poi scorrere tutta la mappa più piccola, creando la mappa 3 con il result (o stampando a video se deve limitarsi alla stampa).
E' un piccolo overhead iniziale, ma per file molto grandi potrebbe avere qualche risultato

oregon
13-07-2011, 20:11
Originariamente inviato da valia
teoricamente potrebbe caricare entrambi su una mappa (accesso rapido quindi) e poi scorrere tutta la mappa più piccola, creando la mappa 3 con il result (o stampando a video se deve limitarsi alla stampa).
E' un piccolo overhead iniziale, ma per file molto grandi potrebbe avere qualche risultato

Sicuramente.

Loading