|
|||||||
|
|
|
![]() |
|
|
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 10: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: 3692
|
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: 17:41.



















