PDA

View Full Version : [c++]Trovare occorrenze di stringhe in1testo


skaks
07-12-2005, 15:42
salve!!
qualcuno mi sa dire come si può scrivere un programma ke ricerca le occorrenze di stringhe prese in input in un testo e ne restituisce la posizione del primo carattere dell'occorrenza nel file d testo?
grazie!!

skaks
07-12-2005, 16:38
ho trovato questo prog..xo nn riesco a capire ke cosa fa la funzione "BOOL SOTTO SEQUENZE" mi sapete dare una mano?
grazie!

#include <iostream>
#include <fstream>
using namespace std;
fstream file_da_leggere;
char nome_del_file[32];

char testo_da_esaminare[10000];

char sequenza_da_cercare[80];

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 r;
do
{
int sequenza=0, caratteri=0;
trovata=false;
cout << "Quale file vuoi analizzare? \n";
cin >> nome_del_file;
cin.get(r); // serve per “scaricare” il \n appena battuto dall'utente
file_da_leggere.open(nome_del_file, ios::in);
while (file_da_leggere.get(testo_da_esaminare[caratteri]) &&
caratteri<10000) caratteri++;
cout << "Quale sequenza di caratteri vuoi cercare? \n";
cin>>sequenza_da_cercare;
while (cin.get(sequenza_da_cercare[sequenza]) && sequenza_da_cercare
[sequenza] != '\n' && sequenza < 80) sequenza++;
if (!sotto_sequenze(testo_da_esaminare, caratteri, sequenza_da_cercare,
sequenza))
cout << "sequenza non trovata. \n";
file_da_leggere.clear();
file_da_leggere.close();
cout << "Vuoi continuare? (y/n)";
cin.get(r);
}
while(r=='y');
return 0;
}