|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2008
Messaggi: 13
|
[C++] Consiglio per le occorrenze!
Salve a tutti! Per cercare le occorrenze in un file ho trovato questo programma (che funziona perfettamente):
Codice:
char nome[30]; char contenuto[100000]; char sequenza_da_cercare[100]; bool trovata; bool sotto_sequenze(char v[], int m, char s[], int n) { for(int i=0; i <= (m-n); i++) { int j=0; while(s[j]==v[i] && j<n) { j++; i++; } if(j==n) { cout << "Stringa trovata in posizione " << i-n << '\n'; trovata=true; } } return trovata; } int main() { char s,r; int caratteri=0,seq=0; ifstream file; do { cout<<"OCCORRENZE:\n"; cout<<"Inserisci il nome del file:\n"; cin>>nome; cin.get(s); file.open(nome,ios::in); if(!file) { cerr<<"*ERRORE* File non trovato\n"; } while(file.get(contenuto[caratteri]) && caratteri<100000) caratteri++;//Prendo i singoli caratteri dal file e li copio nell'array cout<<"Quale occorrenza vuoi cercare??\n"; while(cin.get(sequenza_da_cercare[seq]) && sequenza_da_cercare[seq]!='\n' && seq<100) seq++; if ( sotto_sequenze(contenuto, caratteri, sequenza_da_cercare, seq) ); else cout << "sequenza non trovata. \n"; file.clear(); file.close(); cout<<"Vuoi analizzare un altro file?(y|n)"; cin>>r; }while(r!='n'); Solo che trovo difficile comprendere il meccanismo. Ci sarebbe un metodo piu semplice?? Ultima modifica di cionci : 06-01-2009 alle 09:38. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Puoi usare la find di string per cercare una stringa all'interno di un'altra stringa: http://www.cplusplus.com/reference/s...ring/find.html
|
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Qui trovi un bel po' di algoritmi:
http://www-igm.univ-mlv.fr/~lecroq/string/string.pdf http://www-igm.univ-mlv.fr/~lecroq/string/node1.html |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Se ti serve solo un risultato
se non e' un problema di programmazione se non devi quindi includere il codice da nessuna parte e stai usando Windows (un po' di constraint...) allora puoi usare il comando FIND, gia' pronto
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#5 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:38.