Ex1.xml
)
Alphabet : Expression régulière : |
<?xml version="1.0" ?> |
string
) Ex1.cpp
Ex2.xml
Alphabet : Expression régulière : |
<?xml version="1.0" ?> |
Ex2.cpp
Fx1.xml
Alphabet : Expression régulière : |
<?xml version="1.0" ?> |
Fx1.cpp
Alphabet : Expression régulière : |
|
Ponct.xml
Alphabet : Expression régulière : |
<?xml version="1.0" ?> |
Ponct.cpp
main
Ex1f.cpp
Ex1B.cpp
#include <iostream>
#include <string>
using namespace std;
//======================================================================================
// insérer ici la déclaration de la fonction traduisant l'automate
//======================================================================================
int main () {
cout << "Bonjour ! \nJe suis le programme de reconnaissance \nSortie par CTRL-D \n";
while(true){
string mot;
cout << "Donnez une chaîne\n";
if (!getline(cin, mot)){
cout << "Au-revoir !\n";
break; // sortie de la boucle, fin de l'exécution
}
// on a lu une chaîne...
if( analyser(mot) ){
cout << "Oui\n";
}else{
cout << "Non\n";
}
}//while
return 0;
}//main
Ex1M.cpp
// La première sous-chaîne, la plus longue
#include <iostream>
#include <string>
using namespace std;
//======================================================================================
// insérer ici la déclaration de la fonction traduisant l'automate
//======================================================================================
int main () {
cout << "Bonjour ! \nJe suis le programme de 'match'\n";
string lu;
cout << "Donnez une chaîne\n";
getline(cin, lu);
int k = lu.length();
int d; // indice de début de la sous-chaîne à tester
for( d = 0; d < k; d++ ){ // boucle extérieure
//cout << d << "\n";
int f; // indice de fin de la sous-chaîne à tester
for( f = k; f >= d; f-- ){ // boucle intérieure
string mot = lu.substr(d, f-d);
//cout << mot << "\n";
if( analyser(mot) ){
cout << mot <<"\n";
break; // sort de la boucle intérieure
}
} // for intérieur
if( f >= d ) break; // on est sorti de la boucle avant la fin,
// c'est donc qu'on a trouvé, et on sort
} // for extérieur
if( d == k ) cout << "no match\n";
return 0;
}//main
Ex1MA.cpp
%./a.out < try.txt
// Toutes les plus longues sous-chaînes
#include <iostream>
#include <string>
using namespace std;
//======================================================================================
// insérer ici la déclaration de la fonction traduisant l'automate
//======================================================================================
int main () {
string lu;
getline(cin, lu, '\0'); // censé être un fichier par redirection
int k = lu.length();
int d;
for( d = 0; d< k; d++ ){ // boucle extérieure
int f;
for( f = k; f > d; f-- ){ // boucle intérieure
string mot = lu.substr(d, f-d);
if( analyser(mot) ){
cout << mot <<"\n";
break; // sort de la boucle intérieure
}
}// for intérieur
if( f > d ){
d = f-1; // et on repart
/* N.B. c'est "f-1" et non pas "f", car la variable d sera incrémentée par la boucle for
avant de lancer la prochaine itération ! */
}
} // for extérieur
return 0;
}