Il y a un certain nombre d'améliorations qui peuvent être apportées.
Vous pouvez utiliser des fonctions standard pour la rendre plus claire :
// Notice I made the return type an int instead of a float,
// since you're passing in ints
int smallest(int x, int y, int z){
return std::min(std::min(x, y), z);
}
Ou mieux, comme le soulignent les commentaires :
int smallest(int x, int y, int z){
return std::min({x, y, z});
}
Si vous voulez qu'il fonctionne sur n'importe quel nombre d'INTS, vous pouvez faire quelque chose comme ceci :
int smallest(const std::vector<int>& intvec){
int smallest = std::numeric_limits<int>::max(); // Largest possible integer
// there are a number of ways to structure this loop, this is just one
for (int i = 0; i < intvec.size(); ++i)
{
smallest = std::min(smallest, intvec[i]);
}
return smallest;
}
Vous pouvez également le rendre générique afin qu'il fonctionne sur n'importe quel type, au lieu de simplement INTS
template <typename T>
T smallest(const std::vector<T>& vec){
T smallest = std::numeric_limits<T>::max(); // Largest possible integer
// there are a number of ways to structure this loop, this is just one
for (int i = 0; i < vec.size(); ++i)
{
smallest = std::min(smallest, vec[i]);
}
return smallest;
}