Comment connaître le résultat le plus proche

Fermé
Lieusaint - 15 oct. 2019 à 18:30
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 15 oct. 2019 à 22:46
Bonjours, je suis étudiant en 1er STI2D et je voulais connaître une formule mathématique qui permettes de calculer quelle est le nombre le plus proche entre 2 nombre. Mon objectif est de réaliser un programme pouvant dire quelle est le nombre le plus proche d'un dit chiffre. Par exemple si j'ai 18 et que les je veux savoir (entre 2 et 20) quelle est le nombre le plus proche. (a plus proche de x que b ou non)

2 réponses

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
15 oct. 2019 à 18:35
Bonjour

Et comme ça tu dirais que quel chiffre est plus proche de 18 entre 2 et 20?
0
Bonsoir.

1ère chose, enregistrer les valeurs à tester dans un itérable, ici un tuple.

nombres = (2, 20, 10,)
x = 15


Maintenant si l'on fait une soustraction de valeurs, on se retrouvera avec quelques valeurs négatives peu importe le sens choisi (2 - 15 ou 15 - 20), python propose une fonction pour convertir valeurs négatives en positives => abs

Donc on va calculer les différences de chaque nombre par rapport à x que l'on va enregistrer dans une liste.

differences = []
for nombre in nombres:
    differences.append(abs(x - nombre))


Cette liste construite, on va en déterminer la valeur mini.

difference_min = float('inf')
for difference in differences:
    if difference < difference_min:
        difference_min = difference

print('différence mini', difference_min)


Il ne reste plus qu'à récupérer les indices de la liste "differences" dont les valeurs sont celles de la différence mini, et d'associer ces indices aux nombres.

nombres_plus_proches_de_x = []
for i, difference in enumerate(differences):
    if difference == difference_min:
        nombre = nombres[i]
        nombres_plus_proches_de_x.append(nombre)

print(nombres_plus_proches_de_x)


On peut raccourcir tout cela en quelques lignes avec python

difs = tuple(abs(x - n) for n in nombres)
dif_min = min(difs)
nombres_proches = tuple(nombres[i] for i, v in enumerate(difs) if v == dif_min)
print(nombres_proches)
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
15 oct. 2019 à 22:40
Et tu iras passer son bac à sa place?

Une des règles ici est qu’on ne fait pas les exercices à la place des demandeurs.
On attend qu’ils réfléchissent un peu par eux même, qu’ils proposent au moins un debit de solution et on les oriente s’il y a des corrections à apporter.

Là déjà https://forums.commentcamarche.net/forum/affich-36260371-algorithme-affichage-du-nombre-de-chiffre-d-un-entier-et-son-nombre-inverse#p36261305 tu en as trop fait
-1
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
15 oct. 2019 à 22:46
Un élève de CE2 a qui j’ai posé la même question a répondu 20, je lui ai demandé pourquoi, il m’a dit
Pour aller de 18 à 20, il y a 2 et pour aller de 2 à 18, il y a 16

Je pense donc qu’un élève en 1ere doit pouvoir énoncer ça de lui même sans qu’on lui donne son algorithme tout cuit
-1