Argmin
Résolu/Fermé
toiles
-
Modifié le 25 juil. 2019 à 17:38
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 25 juil. 2019 à 17:35
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 25 juil. 2019 à 17:35
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
Modifié le 25 juil. 2019 à 17:46
Modifié le 25 juil. 2019 à 17:46
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