Bonjour !
Je suis bloquée sur le DM que j'ai à faire pour vendredi :
"1) Écrire un algorithme qui détermine et affiche le nombre N d'entiers naturels à 3 chiffres formés de 3 chiffres distincts, et la somme S de tous ces entiers.
2) Programmer, puis tester cet algorithme avec la calculatrice."
Ma calculatrice est une TI-83+
J'ai essayé un peu de chercher :
- Soit Z un entier naturel > 100
- Soit N = 0
- Soit A le chiffre des centaines
- Soit B le chiffre des dizaines
- Soit C le chiffre des unités
- Pour I allant de 100 à 999
- Tant que A différent de B, B différent de C et A différent de C
- N = N + 1
- S = Z + 1
Mais je suis en panne de réflexion...Quelqu'un pourrait-il m'aider ?
je sais pas s'il peut marcher ton algo, tu l'as essayé
sinon tu peux essayer
soit S=0
pour A=0à9
pour B=0à9
pour C=0à9
si A=!B et A=!C et B=!C
alors afficher A B C
I=I+1
S=S+100*A+10*B+C
finsi
finpour
finpour
finpour
afficher I
afficher S
Oui ton odee est pas mal, mais il faut que tu calcule a,b, et c...
Moi je ferai
Somme=o
Pour i allant de 100 à 999
A= round (i/100)
B =round ( (i-100a)/10)
C=i -100a-10b
If (a diferent de b Et a different de c Et b different de c)
Somme=somme +i
Print (i)
End if
Fin pour
Wouah, vous êtes nombreux ! Merci de m'avoir répondu.
hervelo : Oui, j'ai testé mon algorithme, et je sais qu'il est faux.
Le tien a l'air très bien, mais dans "si A=!B", tu voulais dire "si A différent de B" ?
gggg1234 : Ton algorithme est très bien également, mais que signifie "round" ?
Et pourquoi dans le programme d'hervelo, A démarre à 1 ?
Car a priori tu demarre a 100 si tu veux les nombres à 3 chiffres.
Herve balaye les nombres de 0 à 999.
Pour moi round c'est la fonction qui arrondi exemple:
Round (356/100) va te donne round(3,56) donc 3 le chiffre des centaines.
Mais je pense que l'approche directe d'hervé est plus simple a comprendre.
Et autre chose dans l'ago d'herve il faut que le "afficher i" soit dans les boucles , pas apres. Car tu veux afficher chaque nombre.
Ah, oui, je vois...Cela dit, ton approche est compréhensible, mais je préfère celle d'hervelo.
Sauf que quand je le programme sur la calculatrice, ça affiche "Error".
Est-il utile d'afficher A, B et C au milieu du programme selon toi ?
Le programme d'herve ne fonctionne pas.
Essaue qqch comme ca ( je connais pas le codage des ti83...)
Somme=o
For (a=1 à 9)
For (b=0 à 9)
For (c= 0 à 9)
I = a*100+b*10 +c
If ( a diffreent de b et a different de c et b different de c)
Afficher i
Somme= somme+ i
Fin si
Fin for
Fin for
Fin for
Ca doit etre plus proche su programme attendu, ca t'affixhe tout les nombres qui conviennent et a chaque dois, la somme correspondnate
Effectivement, ca affiche tous les nombres avec 3 chiffres distincts, mais ni leur somme, ni combien il y a d'entiers de 3 chiffres formés de 3 chiffres différents.
Est-ce une différence de machine ? Quelle calculatrice as-tu ?
Ah pardon j'avais ouvlie ton enonce
Il faut rajouter affiicher somme
Apres somme=somme+1
Et il faut un compteur donc
Au debut tu rajoutes somme=0
Compteur=0
Et dans le if tu rajoutes compteur=compteur +1
Et apres afficher i tu rajouter afficher compteur
Ca doit etre bon
Ton algorithme fonctionne, je pense, puisque ce que m'affiche ma calculatrice a l'air cohérent.
Mais est-il nécessaire d'afficher I ? Ca ralentit la machine...
Bonne remarque non, tu n'est pas obligee d'afficher chacun des nombres.
Tu peux supprimer cette ligne, tu auras juste la somme et le nombre de nombres concernes
Mais ça reste toujours aussi long...Est-il possible de n'avoir que la somme et le compteur finaux, et pas toutes les étapes ?
Pour optimiser tu peux aussi mettre la ligne I=100a...
Dans le if, ainsi elle ne sera calculee que pour les chiffres corrects et pas pour tous (comme c'est le cas actuel)
Je ne connais pas le langage ti83, mais a y reflechir peut etre qu'il faut ecrire qqch comme
A=a+1 dans les boucles non? Je regarde sur internet..
J'ai écrit :
Compteur = 0
Somme = 0
Pour A allant de 1 à 9
Pour B allant de 0 à 9
Pour C allant de 0 à 9
Si A différent de B
Si B différent de C
Si A different de C
I = (100*A) + (10*B) + C
Compteur = Compteur + 1
Somme = Somme + I
Fin Si
Fin Si
Fin Si
Fin Pour
Fin Pour
Fin Pour
Afficher Compteur
Afficher Somme
For (a,1,9,1)
For (b,0,9,1)
For (c,0,9,1)
......
End
End
End
Le reste est pareil et je crois que pour le if il faut ecrire
If (...)
Then
...
J'espere que tu ne l'e ris pas comme ca!
Il faut ecrire un truc du genre
If ( (a =/= b) and (a=/=c) and (b=/=c) h
Then
Verifie le signe pour different, j'ai un doute
"Erreur syntaxe", toujours...
Vraiment, je ne sais pas d'où ça peut venir.
Sinon, que signifie :
"For (a,1,9,1)
For (b,0,9,1)
For (c,0,9,1) " ?
Ca veut dire :
For ( variable, nombre de depart, nombre de fin, increment)
Ca signifie a ca de 1 à 9 ( de 1 en 1)
0->somme
0->compteur
For (a,1,9,1)
For (b,0,9,1)
For (c,0,9,1)
If ( (a=/=b) and (a=/=c) and (b=/=c))
Then
Somme+ (100*a + 10*b+c)--> somme
Compteur+1->compteur
End
End
End
Disp somme
Disp compteur
J'AI TROUVÉ !
Il fallait rajouter un 4ème End à la fin, en fait.
N = 648 (comme je l'avais trouvé en le calculant manuellement) et S = 355 680.
Merci infiniment pour ta précieuse aide ! Et pardon du dérangement...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :