Argmin
Résolu
Bonjour,
On veut programmer en c++ une fonction qui prend en argument un tableau de réels et un entier indiquant sa taille et qui renvoie l'indice de minimum.
On veut programmer en c++ une fonction qui prend en argument un tableau de réels et un entier indiquant sa taille et qui renvoie l'indice de minimum.
1 réponse
Bonjour,
Si tu travailles en C++, il serait mieux d'utiliser
Exemple
... retourne :
Documentation
Si tu veux vraiment utiliser un tableau de base, on est plus dans l'esprit du C :
Bonne chance
Si tu travailles en C++, il serait mieux d'utiliser
std::vector. Tu peux t'inspirer de cette discussion.
Exemple
#include <algorithm> // std::min_element #include <iterator> // std::distance #include <iostream> // std::cout #include <vector> // std::vector template <typename T> std::size_t argmin(const std::vector<T> & v) { return std::distance(v.begin(), std::min_element(v.begin(), v.end())); } int main() { using namespace std; const vector<int> v = {2, 1, 10, 0, 3}; size_t i = argmin(v); cout << "index = " << i << " valeur = " << v[i] << endl; return 0; }
... retourne :
index = 3 valeur = 0
Documentation
Si tu veux vraiment utiliser un tableau de base, on est plus dans l'esprit du C :
#include <iostream> template <typename T> std::size_t argmin(const T tab[], std::size_t n) { if (n == 0) return 0; T min = tab[0]; std::size_t imin = 0; for (size_t i = 1; i < n; i++) { if (tab[i] < min) { min = tab[i]; imin = i; } } return imin; } int main() { using namespace std; const int tab[5] = {2, 1, 10, 0, 3}; size_t i = argmin(tab, 5); cout << "index = " << i << " valeur = " << tab[i] << endl; return 0; }
Bonne chance