Coder la fonction CompterDoublon ()
de l’exercice 1 du TD6.
Ecrivez une fonction de test à l’aide de easyassert.
Coder la fonction CompterDoublon ()
de l’exercice 1 du TD6.
Ecrivez une fonction de test à l’aide de easyassert.
Coder la fonction CompterDoublon ()
de l’exercice 2 du TD6.
Ecrivez une fonction de test à l’aide de easyassert.
Coder la fonction CompterDoublon ()
de l’exercice 3 du TD6.
Ecrivez une fonction de test à l’aide de easyassert.
Coder la fonction FindSubstrInStr()
de l’exercice 4 du TD6.
Ecrivez une fonction de test à l’aide de easyassert.
#include <iostream> #include <cctype> //isspace () #include "EasyAssert.h" using namespace std; unsigned CompterDoublonsV1 (const string & Chaine) { unsigned Cpt (0); for (unsigned i (0); i < Chaine.size()-1; i = i + 1) { if (isspace(Chaine [i])) continue; if (Chaine[i] == Chaine [i+1]) { Cpt = Cpt + 1; i = i + 1; } } return Cpt; }//CompterDoublonsV1 void TestCompterDoublonsV1() { EASY_ASSERT(CompterDoublonsV1 ("aaaa")==2); EASY_ASSERT(CompterDoublonsV1 ("aaaaa")==2); EASY_ASSERT(CompterDoublonsV1 ("aaaaaa")==3); }//TestCompterDoublonsV1 unsigned CompterDoublonsV2 (const string & Chaine) { unsigned Cpt (0); for (unsigned i (0); i < Chaine.size()-1; i = i + 1) { if ((isspace(Chaine [i]) && isspace (Chaine[i + 1])) || (Chaine[i] == Chaine [i+1])) { Cpt = Cpt + 1; } } return Cpt; }//CompterDoublonsV2 void TestCompterDoublonsV2() { EASY_ASSERT(CompterDoublonsV2 ("aa aa")==3); EASY_ASSERT(CompterDoublonsV2 ("aa aaa")==4); EASY_ASSERT(CompterDoublonsV2 ("aa \taa")==3); }//TestCompterDoublonsV2 unsigned CompterDoublonsV3 (const string & Chaine) { unsigned Cpt (0); char CarPrec (Chaine [0]); for (unsigned i (0); i < Chaine.size()-1; i = i + 1) { if (isspace(Chaine [i])) continue; if (Chaine[i] == CarPrec) { Cpt = Cpt + 1; } } return Cpt; }//CompterDoublonsV3 void TestCompterDoublonsV3() { EASY_ASSERT(CompterDoublonsV2 ("aa aa")==3); EASY_ASSERT(CompterDoublonsV2 ("aa aaa")==4); EASY_ASSERT(CompterDoublonsV2 ("aa \taa")==3); }//TestCompterDoublonsV3 unsigned long long TrouveCarDansStr (const char & Caract, const string & Chaine, const unsigned long long & Debut) { unsigned long long Pos (Debut); for (; Pos < Chaine.size() && Chaine[Pos] != Caract; Pos = Pos + 1); return Pos; }//TrouveCarDansStr () unsigned long long FindSubstrInStr(const string & Chaine, const string & SousChaine, unsigned long long PosDep) { if (0 == Chaine.size() || 0 == SousChaine.size() || Chaine.size() + PosDep < SousChaine.size()) return string::npos; unsigned long long i (TrouveCarDansStr (SousChaine [0], Chaine, PosDep)); while (i < Chaine.size() - SousChaine.size()) { unsigned long long j (1); while (j < SousChaine.size() && (Chaine [i + j] == SousChaine [j])) { j = j + 1; } if (j == SousChaine.size()) return i; i = TrouveCarDansStr (SousChaine [0], Chaine, i + 1); } return string::npos; }// FindSubstrInStr () unsigned long long FindSubstrInStrV2 (const string & Chaine, const string & SousChaine, unsigned long long PosDep) { if (0 == Chaine.size() || 0 == SousChaine.size() || Chaine.size() + PosDep < SousChaine.size()) return string::npos; for (unsigned long long i (PosDep); i < Chaine.size() - SousChaine.size(); i = i +1) { if (Chaine [i] != SousChaine[0]) continue; unsigned long long j (1); while (j < SousChaine.size() && (Chaine [i + j] == SousChaine [j])) { j = j + 1; } if (j == SousChaine.size()) return i; } return string::npos; }//FindSubstrInStrV2 () unsigned long long FindSubstrInStrV3 (const string & Chaine, const string & SousChaine, unsigned long long PosDep) { if (0 == Chaine.size() || 0 == SousChaine.size() || Chaine.size() + PosDep < SousChaine.size()) return string::npos; for (unsigned long long i (PosDep); i < Chaine.size() - SousChaine.size(); i = i +1) { if (Chaine.substr(i, SousChaine.size()) == SousChaine) return i; } return string::npos; }//FindSubstrInStrV3 () void TestFindSubstrInStr () { string Chaine ("Ma jolie chaine"); string SousChaine ("jolie"); EASY_ASSERT(FindSubstrInStr (Chaine, SousChaine, 0) == 3); EASY_ASSERT(FindSubstrInStrV2 (Chaine, SousChaine, 0) == FindSubstrInStr (Chaine, SousChaine, 0)); EASY_ASSERT(Chaine.find(SousChaine,0) == FindSubstrInStr (Chaine, SousChaine, 0)); EASY_ASSERT(Chaine.find(SousChaine,0) == FindSubstrInStrV3 (Chaine, SousChaine, 0)); SousChaine = "pas"; EASY_ASSERT(FindSubstrInStr (Chaine, SousChaine, 0) == string::npos); EASY_ASSERT(FindSubstrInStrV2 (Chaine, SousChaine, 0) == FindSubstrInStr (Chaine, SousChaine, 0)); EASY_ASSERT(Chaine.find(SousChaine,0) == FindSubstrInStr (Chaine, SousChaine, 0)); EASY_ASSERT(Chaine.find(SousChaine,0) == FindSubstrInStrV3 (Chaine, SousChaine, 0)); }// TestFindSubstrInStr () int main() { //TestCompterDoublonsV1 (); //TestCompterDoublonsV2 (); //TestCompterDoublonsV3(); TestFindSubstrInStr (); return 0; }