Programme Plus Petit Chiffre d'un Entier

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
Gregamo
Messages: 3
Enregistré le: 12 Fév 2009, 18:18

Programme Plus Petit Chiffre d'un Entier

par Gregamo » 12 Fév 2009, 18:30

Bonsoir,

Alors j'ai un dm avec quelques programmes sur calculatrice à faire pendant les vacances...
Dans un premier temps je devais identifier un programme, Somme des Chiffres je pense.
Maintenant, je bloque... j'ai l'entrée de mon programme et la fin. J'ai même le lien, et les instructions à utiliser ! Mais ça fait 1semaine que je tourne en rond, je me demandais donc si quelqu'un pouvait m'aider.

Alors, il faut que ce programme me donne le plus petit chiffre d'un entier. Par exemple si pptchif est le programme en question, pptchif(56701)=0.
Donc, pour bien comprendre, je me suis aider d'un tableur...
Si on définit u=mod(n,10),
en collonne A1, on met n, puis ensuite on met dans les reste de la colonne A (n-u)/10
en collonne B, on met notre "u"
... Pour le plus petit chiffre, il faut le plus petit u je pense !

Mon prof me dit d'utiliser les instructions While et If... mais dans quel ordre ? comment mettre en mémoire mes "u" et ensuite lorsque n=0, prendre le minumum des "u" : ce qui correspond a la sortie du programme je pense...

Avez vous des suggestions, d'autres idées peut etre ?
Merci d'avance



Sve@r

par Sve@r » 12 Fév 2009, 19:38

Ton problème est ce qu'on nomme un problème d'algorithmie => comment transformer une méthode de résolution en opérations de bases compréhensibles par un ordinateur. L'important n'est pas l'ordre du while ou du if mais de savoir ce que font ces instructions et quand les utiliser.

Effectivement, partir sur le modulo du nombre avec 10 est une bonne idée car ça te donne le dernier chiffre dudit nombre. Ensuite, faut juste que tu vérifies si ce dernier chiffre est plus petit que celui qui est mémorisé comme étant "le plus petit trouvé jusqu'à présent". Si c'est le cas, tu remplaces le chiffre mémorisé par celui-là
Puis tu divises euclidiennement ton nombre par 10 si ce nouveau nombre ne vaut pas 0, tu recommences l'opération complète avec ce nouveau nombre comme base

Si au contraire le nombre vaut 0, alors tu t'arrêtes. A ce moment là, le plus petit chiffre du nombre du début est celui qui se trouve mémorisé.

gregoil
Messages: 2
Enregistré le: 06 Jan 2008, 15:03

par gregoil » 27 Fév 2009, 14:48

Merci !

Bon alors je vais réessayer... J'avais carrément abandonner...
Surtout que mon prof' m'a passé un programme devant m'aider : il me donne la somme des chiffres d'un nombre entier... Mais je n'arrive pas a assimiler les instruction... While ? If ?
L'une sert a faire une boucle, l'autre un test... non ?

Gregamo
Messages: 3
Enregistré le: 12 Fév 2009, 18:18

par Gregamo » 27 Fév 2009, 14:52

Merci !

Bon alors je vais réessayer... J'avais carrément abandonner...
Surtout que mon prof' m'a passé un programme devant m'aider : il me donne la somme des chiffres d'un nombre entier... Mais je n'arrive pas a assimiler les instruction... While ? If ?
L'une sert a faire une boucle, l'autre un test... non ?

emcee
Membre Relatif
Messages: 105
Enregistré le: 23 Fév 2009, 15:30

par emcee » 27 Fév 2009, 16:45

while (condition)


permet de faire une instruction tant que la condition est remplie. Dans ton cas, l'instruction c'est d'examiner n mod 10, et la condition c'est "je n'ai pas examiné tous les chiffres de n"

if (condition)


permet de faire une instruction une fois, et si la condition est remplie. Dans ton cas, une fois que tu as examiné un chiffre du nombre n, il faut que tu le compares au plus petit chiffre trouvé jusqu'à présent, et que s'il est plus petit, tu le gardes en memoire à la place de celui que tu avais jusqu'à présent.


En d'autres termes :

u = n mod 10 (% j'initialise la mémoire du plus petit chiffre rencontré au dernier chiffre de n)
n = (n - n mod 10) / 10 (% "j'avance" d'un rang)
tantque (n > 0) (% tant qu'il y a des chiffres de n à examiner)
i = n mod 10 (% je regarde le dernier)
si (i<u) alors u=i (% si le chiffre en cours d'examen est pus petit que ce que j'avais en mémoire, je le remplace)
n = (n - n mod 10) / 10 (% "j'avance" d'un rang)
fintantque
return u

Gregamo
Messages: 3
Enregistré le: 12 Fév 2009, 18:18

par Gregamo » 28 Fév 2009, 14:39

Merci beaucoup.

En fait, j'avais tout... mais ce fut laborieux pour tout assembler comme il faut !
Maintenant, que je pense avoir compris, je vais continuer, et les faire seul les autres programmes !

Merci encore

emcee
Membre Relatif
Messages: 105
Enregistré le: 23 Fév 2009, 15:30

par emcee » 28 Fév 2009, 16:09

un plaisir !

un peu d'algorithmique dans ce forum consacré aux équations du 2nd degré et aux vecteurs ;-)

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 89 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite