Benaddar Posted September 22, 2005 Share Posted September 22, 2005 Bonjour, je planche sur un problème depuis quelques temps (j'aide quelq'un). Le sujet: Ecrire l'algorithme qui trouve le chiffre des unités d'un nombre entier donné Sachant que ce quelqu'un n'a pas vu l'incrémentation ni la décrémentation. Seulement les instructions de base. Merci de donner quelques indices. Link to comment Share on other sites More sharing options...
kmlz Posted September 22, 2005 Share Posted September 22, 2005 En quel langage ? Si le langage le permet, il suffit de faire "unité= nombre % 10". % étant l'opérateur modulo (reste de la division, ici par 10). Link to comment Share on other sites More sharing options...
Benaddar Posted September 22, 2005 Author Share Posted September 22, 2005 C'est de l'algorithmie. Link to comment Share on other sites More sharing options...
theocrite Posted September 22, 2005 Share Posted September 22, 2005 L'agorithmie, ce n'est pas un langage, c'est une façon de procéfer. L'algo, ça peut être : prendre le reste de la division par 10 de ce nombre. Après en C ou en php ou dans la plupart des langages, c'est nombre%10. Link to comment Share on other sites More sharing options...
Sentinel Posted September 22, 2005 Share Posted September 22, 2005 En pseudo-langage, et en utilisant un algo simple au lieu de l'opérateur modulo, ça pourrait donner un truc comme : nombre = 328; Tant que nombre > 10 : nombre = nombre - 10; ecrire le nombre Link to comment Share on other sites More sharing options...
Baldurien Posted September 22, 2005 Share Posted September 22, 2005 Un petit peu long ton truc : si tu prends 3 milliards, tu vas attendre longtemps avant d'avoir l'unité. Si tu manipules que des entiers, tu peux tenter ceci : x = nombre / 10; solution = nombre - x * 10; C'est l'équivalent du modulo, mais il suppose que '/' soit une division entière. Link to comment Share on other sites More sharing options...
Sentinel Posted September 22, 2005 Share Posted September 22, 2005 raté, ton truc ça donne zéro à tous les coups... x = nombre / 10; solution = nombre - x * 10 => solution = nombre - (nombre/10)*10 => solution = nombre - nombre => solution = 0 Je maintiens que mon algo fonctionne mieux Link to comment Share on other sites More sharing options...
theocrite Posted September 22, 2005 Share Posted September 22, 2005 => solution = nombre - (nombre/10)*10 = 0 Comment tu es pointillieux ! Il sous entendait bien sûr la division euclidiènne solution = nombre - 10*E(nombre/10) (avec E(x) partie entière (tronquée) de x) Au moins de cette façon, on a un aglo qui fonctionne en temps constant o(1), ce qui évite d'avoir à réfléchir aux limites justement (les grands nombres pour le coup) Link to comment Share on other sites More sharing options...
Sentinel Posted September 22, 2005 Share Posted September 22, 2005 Ouais, bon, admettons... Mais bon, le but semblait ici d'appredre les bases de l'algorithmie, c'est-à-dire surtout l'art d'enchaîner boucles et tests. Si on veut rire y'a aussi : nombre - (floor(nombre/10) * 10) Chuis sûr qu'on peut faire un concours sur les algos les plus tordus même Link to comment Share on other sites More sharing options...
Jiriki Posted September 22, 2005 Share Posted September 22, 2005 x = nombre / 10;solution = nombre - x * 10; +1 ya pas mieux Sinon pour manipuler le tant que ------------------------------------------ var = 0 Tant que (nombre - var) mod 10 différent de 0 alors var = var + 1 Solution = var Ce qui donne en récursif: ------------------------------------------ fonction CherchUnit (nombre n, var v) début Si (n - v) mod 10 différent de 0 alors CherchUnit(n, var +1) Sinon Solution = v fin Premier appel => CherchUnit(LeNombre, 0) Link to comment Share on other sites More sharing options...
theocrite Posted September 22, 2005 Share Posted September 22, 2005 Si on veut rire y'a aussi : nombre - (floor(nombre/10) * 10)Chuis sûr qu'on peut faire un concours sur les algos les plus tordus même Ben floor, c'est la fonction qui fait ce que fait E en maths il se semble Link to comment Share on other sites More sharing options...
Sentinel Posted September 22, 2005 Share Posted September 22, 2005 Euh oui c'est vrai ! (en fait j'étais parti sur une autre idée que j'ai resimplifiée, et au final je retombe là-dessus ) Bon, c'est pas tout ça, mais je vais aller me faire un casse-dalle :) Link to comment Share on other sites More sharing options...
Benaddar Posted September 22, 2005 Author Share Posted September 22, 2005 Merci pour toutes vos réponses et bonne nuit à tous. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.