Nous nous appuierons sur une structure
GenFraction, devant faire
partie de l'espace de noms
generic dans le fichier
find.hpp.
Elle n'est composée que de deux membres
numer et
denom dont
le type (
template) pourra être choisi lors de la création d'une
telle structure.
Il faut réaliser, dans le fichier
prog_ex0301.cpp, cette
fonction :
void
test_Fraction_find(s4prc::GenFraction<int> value)
{
std::cout << "\n~~~~ " << __func__ << "() ~~~~\n";
const std::vector<s4prc::GenFraction<int>> v=
{{2, 3}, {3, 5}, {4, 7}, {8, 5}};
// ...look for a fraction in v which is equivalent to value...
// ...if not found, display a message...
// ...if found, display the fraction...
}
qui sera appelée depuis la fonction
main() ; elle doit être
complétée en suivant les commentaires.
La recherche dans le tableau dynamique
v devra utiliser l'algorithme
std::find_if().
La
lambda-closure qui lui sera transmise indiquera si
value est
équivalente à la fraction considérée : une fraction
a est
équivalente à une fraction
b si le produit
a.numer*b.denom
est égal au produit
b.numer*a.denom.
La recherche de la valeur
{3, 4} devrait être infructueuse,
alors que la recherche de
{6, 10} devrait trouver
la fraction
{3, 5}.