Benaddar Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
kmlz Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Benaddar Posté(e) le 22 septembre 2005 Auteur Partager Posté(e) le 22 septembre 2005 C'est de l'algorithmie. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jiriki Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 22 septembre 2005 Partager Posté(e) le 22 septembre 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 :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Benaddar Posté(e) le 22 septembre 2005 Auteur Partager Posté(e) le 22 septembre 2005 Merci pour toutes vos réponses et bonne nuit à tous. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.