Ce qui suit propose quelques solutions possibles pour les exercices proposés à la séance S04. Vous aurez peut-être même trouvé mieux, qui sait?
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
using namespace std;
int main() {
int tab[] { 2, 3, 3, 3, 5, 7, 7, 7, 7, 11, 11 };
auto pos = trouver_consecutifs(begin(tab), end(tab), 1);
assert(pos == begin(tab));
pos = trouver_consecutifs(begin(tab), end(tab), 2);
assert(pos == begin(tab) + 1);
pos = trouver_consecutifs(begin(tab), end(tab), 3);
assert(pos == begin(tab) + 1);
pos = trouver_consecutifs(begin(tab), end(tab), 4);
assert(pos == begin(tab) + 5);
pos = trouver_consecutifs(begin(tab), end(tab), 5);
assert(pos == end(tab));
pos = trouver_consecutifs(begin(tab), end(tab), -2);
assert(pos == end(tab));
}
Remarquez que :
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <vector>
#include <algorithm>
#include <utility>
#include <cassert>
using namespace std;
int main() {
vector<int> v;
auto resultat = plus_longue_sequence(begin(v), end(v));
assert(resultat.first == end(v) && resultat.second == end(v));
v = { 2, 2, 3, 4, 5, 5, 5, 6 };
resultat = plus_longue_sequence(begin(v), end(v));
assert(resultat.first == begin(v) + 4 && resultat.second == begin(v) + 7);
v = { 2 };
resultat = plus_longue_sequence(begin(v), end(v));
assert(resultat.first == begin(v) && resultat.second == end(v));
v = { 2, 2, 3, 3 };
resultat = plus_longue_sequence(begin(v), end(v));
assert(resultat.first == begin(v) && resultat.second == begin(v) + 2);
}
Remarquez que :
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <vector>
#include <cassert>
using namespace std;
int main() {
auto est_pair = [](int n) { return n % 2 == 0; };
auto est_impair = [=](int n) { return !est_pair(n); };
vector<int> v;
auto resultat = plus_longue_sequence(begin(v), end(v), est_pair);
assert(resultat.first == end(v) && resultat.second == end(v));
v = { 2, 2, 3, 4, 5, 5, 5, 6 };
resultat = plus_longue_sequence(begin(v), end(v), est_pair);
assert(resultat.first == begin(v) && resultat.second == begin(v) + 2);
resultat = plus_longue_sequence(begin(v), end(v), est_impair);
assert(resultat.first == begin(v) + 4 && resultat.second == begin(v) + 7);
v = { 2 };
resultat = plus_longue_sequence(begin(v), end(v), est_pair);
assert(resultat.first == begin(v) && resultat.second == end(v));
resultat = plus_longue_sequence(begin(v), end(v), est_impair);
assert(resultat.first == end(v) && resultat.second == end(v));
v = { 2, 2, 4, 4 };
resultat = plus_longue_sequence(begin(v), end(v), est_pair);
assert(resultat.first == begin(v) && resultat.second == end(v));
}
Les tests sont semblables à ceux réalisés pour plus_longue_sequence(debut,fin), à ceci près que nous utilisons ici des prédicats pour déterminer les caractéristiques d'une séquence. Par exemple, le dernier test trouvera le contenu de v tout entier puisque tous les nombres qui y sont sont pairs.
Pour les exercices suivants, vous aurez besoin de déterminer si un caractère c est un blanc ou non. Utilisez pour ce faire la fonction std::isspace(char,std::locale) que vous trouverez dans <locale>, en utilisant locale{""} à titre de paramètre pour le locale.
Notez qu'il existe aussi un std::isspace(char), fonction du langage C, dans <cctype>, version C++ de <ctype.h>, mais cette version (plus rapide, car moins puissante) ne tient pas compte de la culture et ne correspond pas à nos attentes pour cet exercice.
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(inverser_mots("") == "");
assert(inverser_mots(" j'aime mon prof ") == " prof mon j'aime ");
assert(inverser_mots("yo") == "yo");
assert(inverser_mots(" yo man") == " man yo");
assert(inverser_mots("yo man") == "man yo");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail. Le cas d'une chaîne vide n'avait pas été imposé, mais quelle excellent cas de test, n'est-ce pas?
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(inverser_lettres("") == "");
assert(inverser_lettres(" j'aime mon prof ") == " emia'j nom forp ");
assert(inverser_lettres("yo") == "oy");
assert(inverser_lettres(" yo man") == " oy nam");
assert(inverser_lettres("yo man") == "oy nam");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail. Le cas d'une chaîne vide n'avait pas été imposé, mais quelle excellent cas de test, n'est-ce pas?
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(ltrim(" j'aime mon prof ") == "j'aime mon prof ");
assert(ltrim("j'aime mon prof ") == "j'aime mon prof ");
assert(ltrim(" x ") == "x ");
assert(ltrim(" ") == "");
assert(ltrim("") == "");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail.
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(rtrim(" j'aime mon prof ") == " j'aime mon prof");
assert(rtrim(" j'aime mon prof") == " j'aime mon prof");
assert(rtrim(" x ") == " x");
assert(rtrim(" ") == "");
assert(rtrim("") == "");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail.
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(trim(" j'aime mon prof ") == "j'aime mon prof");
assert(trim("j'aime mon prof") == "j'aime mon prof");
assert(trim("x") == "x");
assert(trim(" ") == "");
assert(trim("") == "");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail.
Consigne :
Programme de test possible : il serait possible de tester votre solution avec un programme comme celui-ci.
//
// Votre code va ici, ou dans un .h que vous inclurez
//
#include <cassert>
int main() {
assert(elaguer_blancs(" j'aime mon prof ") == " j'aime mon prof ");
assert(elaguer_blancs("j'aime mon prof") == "j'aime mon prof");
assert(elaguer_blancs(" ") == " ");
assert(elaguer_blancs(" ") == " ");
assert(elaguer_blancs("") == "");
}
Ceci correspond aux cas de tests proposés dans l'énoncé du travail.