Bonjour,
une de mes élèves de premières m'a demandé de l'aide sur un exo mais j'ai malheureusement du mal.
C'est sur une programmation algorithme. Moi quand j'étais en première nous n'en faisions pas et je suis complétement larguée. Merci d'avance pour votre aide.
Son prof lui a donné comme problème celui très connu du bramahne de Sissa, légende qu'on prétend être à l'origine du jeu d'échec. Dans la légende , le roi pour remercier le sage accepte sa proposition de mettre un grain de riz sur la première case de l'échiquier, deux grains de riz sur la 2eme case, 4 grains sur la 3ème case , etc... jusqu'à recouvrir tout l'échiquier.
Donc l'énoncé demande de faire un algorithme pour connaitre le nombre total de grains de riz.
Avec beaucoup de difficultés , à nous deux, sur sa TI82 stats.fr, nous avons réussi à faire ceci :
0->S ( avec S le nombre de grains de riz)
For (I, 1, 64) ( et I le nb de case de l'échiquier)
S+2^(I-1)-> S
end
Disp S
Alors j'ai vérifié par rapport à excell, notre programmation est juste mais ca nous donne d'un coup le total des grains de riz de l'ensemble des 64 cases.
Or ce qu'on voudrait c'est pouvoir demander le total par case. Genre si nous demandons la case 3 et bien la calculatrice nous répond 7 grains .Si on demande la case 4 la calculatrice nous répond 15 grains de riz.
Mais je ne vois pas du tout comment faire. JE pense qu'il faut introduire une boucle , mais déjà je ne fais pas la différence entre les boucles pour et tant que et surtout je ne sais pas comment y introduire dans la programmation de base. Ce que j'ai essayé , soit ca me mettait erreur, soit la calculatrice cherchait infiniment sans me donner de réponse.
Alors comment faire ?
Merci d'avance pour votre aide
Bonjour,
Il faut juste utiliser une autre variable X
Et mettre dans la boucle
X = 2^(I-1)
S = S + X (à la place de S reçoit S + 2^(I-1) )
Afficher i et X
Ton 2^(I-1) me semble étrange avec la boucle pour i variant de 1 à 64 ....
Car pour i = 1 , alors i-1 = 0 donc 2(I-1) = 20 = 1 ...... pas sure que ce soit vraiment correct !!!!!
Bin si .... tu as initialisé S à 0 donc le premier terme à additionner est bien 1 !!!! pardon j'avais lu trop vite !
Bonjour,
0->S ( avec S le nombre de grains de riz)
0->C
For (I, 1, 64) ( et I le nb de cases de l'échiquier)
2^(I-1)-> C
Disp C
S+C-> S
end
Disp S
merci pour ta réponse rapide.
Donc la nouvelle variable X que tu introduit c'est pour avoir le nombre de grains de riz par case à la demande ?
Et du coup tu fais une boucle pour ou une tant que ? c'est quoi la différence entre elles ? Car je suppose que si les deux existent ce n'est pas la meme chose ...
Et pour 2^0 si car cela fait 1 et ca représente le 1er grain de riz sur la 1ere case.
merci
Barney,
merci pour ton aide mais du coup avec cet algo, la calculatrice ne nous demande jamais la valeur que l'on veut donner à C ? Comment faire pour avoir cela ?
Tu as donc maintenant la version complète !
J'avais quand même écrit : mettre dans la boucle .......
Donc entre le for et le end ....
donc tu prends une boucle "pour"...
comment savoir quand il faut utiliser une boucle "pour" et quand il faut utiliser une boucle "tant que " ?
Quand tu sais qu'il faut faire n fois un truc pour une variable qui varie de 0 à n-1 ou de 1 à n .... on utilise une boucle Pour i allant de ... à ...
Du genre faire afficher une table de multiplication de 1 à 10 .... on fera pour i allant de 1 à 10
Quand il faut faire et refaire un truc tant qu'un résultat n'est pas obtenu ... on utilise une boucle tant que ...
Du genre quand on cherche à partir de quel rang le terme d'une suite est > A ... on utilisera une boule à répéter tant Un A
Et faire un algo est obligatoire, avant de rédiger son programme . Il faudrait même tester son algo sur une ou 2 valeurs simples qui ne demandent pas trop d'itérations, avant de programmer !
L'algorithme étant le brouillon du programme et on passe au programme quand l'algo donne une réponse convenable !
Je viens d'essayer ton algo barney, ca ne va pas du tout.
Sur l'écran de la calculatrice ca me défile hyper vite et donc c'est illisible les résultats des 64 cases.
Sauf les dernières lignes bien sur vu que je les vois mais je n'ai pas la précision de la case.
Moi ce que je veux faire c'est que quand je lance le programme sur la calculatrice, celle ci me demande quelle case ?
Et moi je lui répond case 3.
Et la elle cherche et elle me dit 7 grains de riz sur le total des 3 cases.
et après si je veux je relance le programme, , la elle me redemande quelle case, je lui dit case 5.
elle cherche et elle me repond 31 grains de riz sur le total des 5 premières cases.
Il faut faire comment ?
merci
Mettre une pause dans la boucle ... tu lis le truc tu appuies sur une touche et cela passe à la case suivante !
Si tu veux écrire un algo qui demande combien il y aura de grains sur une case que tu choisis :
Algo
Saisir C (le numéro de la case souhaitée)
X reçoit 2^(C-1)
Disp X
alors moi c'est presque ca que je veux, je veux que mon algo me donne la somme des grains de riz.
Donc si je choisis c= 3 ce sera la somme du riz en C1 +C2 +C3
si je demande c=5 le résultat sera la somme du riz en C1 +C2 +C3+C4+C5
avec ton programme j'ai juste le nombre de grains case par case . Comme je te le demandait plus haut je veux le total à chaque fois.
LA question est :
Combien de grains de riz sur la case C ? avec C choisi !!!!!
ou
Combien de grains de riz on été posés sur l'échiquier quand on remplit la C!ème case ? avec C choisi !!!!!
Les questions n'ont pas les mêmes réponses !!!!
désolée de ne pa.s avoir été claire, mais j'ai du mal .
ce que je veux repond à ta Q2 Combien de grains de riz on été posés sur l'échiquier quand on remplit la C!ème case ? avec C choisi !!!!!
merci beaucoup pour ta patience et ton aide
Question : Combien de grains de riz on été posés sur l'échiquier quand on remplit la C!ème case ? avec C choisi
Algo
Saisir C (le numéro de la case souhaitée)
S reçoit 0
Pour i variant de 1 à C
S reçoit S + 2^(i-1)
Fin pour
Afficher S
Question : Combien de grains de riz sont posés dans la C!ème case ? avec C choisi
Algo
Saisir C (le numéro de la case souhaitée)
X reçoit 2^(C-1)
Afficher X
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :