Salut a tous j'ai un dm pour Lundi et il y a deux exos qui me pose problème et que je n'y arrive pas Merci de votre aide!
Ecrire en language naturel un algorithme qui permet de calculer la somme de T= 1/1+1/3+1/5+1/7...1/29
il faut absolument utiliser la boucle tant que
J'ai trouver sa je ne sait pas si c'est juste
Saisir A;M;E
A prend la valeur 1
M prend la valeur 1
Tant que M > 29
S=A/M
M=M+2
Fin tant que
Afficher S
Bonjour,
c'est déja une première bonne idée, mais les détails sont du total n'importe quoi
Saisir A;M;E ah bon? non, c'est variables : ...
il n'y a rien à "saisir" ici, aucune entrée manuelle de valeur à faire lors de l'exécution,
c'est ça que veut dire "saisir" entrer des valeurs à la main
A prend la valeur 1 rend de toute façon le saisir" précédent caduc puisque quelle que doit la valeur saisie, elle serait écrasée par 1
M prend la valeur 1
Tant que M > 29 Comme M est pour l'instant = 1 et que 1 n'est pas > 29, la boucle n'est pas effectuée du tout.
S=A/M faux, voir plus loin
M=M+2 OK
Fin tant que OK
Afficher S OK
étudions le contenu de la boucle en supposant que cette boucle soit exécutée "un certain nombre de fois" (non nul), ce que tu souhaitais faire mais que tu as raté.
la première fois M = 1, A = 1 et tu calcules 1/1 = 1 que tu mets dans S, OK
la seconde fois, M = 3, A est toujours égal à 1 et tu calcules 1/3
que tu mets dans S, écrasant l'ancienne valeur de S
bref au lieu de calculer la somme des termes, tu ne mets dans S à chaque fois que la seule valeur du dernier terme calculé !!
à la fin tu devrais donc afficher 1/29 0.03448276
au passage à quoi peut bien servir d'utiliser une variable A pour mettre la valeur 1 qui ne change jamais ???
bref, erreurs à corriger :
déclaration de variable à la place de "saisir"
corriger la condition du tant que
corriger le principe même du calcul de S :
on accumule des termes dans S
ce qui devrait se traduire par :
S prend la valeur S plus terme
(et il faudra bien donner une valeur initiale à S avant d'entrer dans la boucle)
PS : et écrire de façon homogène
soit tu mets des "variable valeur ou calcul"
soit tu mets des "variable valeur ou calcul"
mais pas un mélange des deux syntaxes comme tu l'as fait.
mathafou se decarcasse pour te donner un cours particulier et tu reponds "tu propose(s) quoi"
c'est à toi de proposer
essaie et teste avec Algobox ou autre
voici ce que je fais avec mes eleves avec Xcas, prends l'essentiel et redige comme avec ton prof:
CalculerSomme():={ // fonction sans parametre (pas de saisie)
local S,n; // declaration des variables limitees à ce programme
S:=0;n:=1; // initialisation des variables locales
tantque n<=29 faire // tant que n reste inferieur ou egal à 29
S:=S+1/n; // ajouter 1/n à S
n:=n+2; // ajouter 2 à n
ftantque
retourne S // valeur de retour,resultat,sortie,image par la fonction CalculerSomme
}:;
tu peux verifier la reponse toujours avec Xcas en tapant ou collant:
somme(1/k,k,1,29,2)
presque la même chose que ce que tu avais écrit en corrigeant les lignes (les parties en gras) en fonction de ce que j'ai dit :
Saisir A;M;E
A prend la valeur 1
M prend la valeur 1
initialisation de S <--- ligne à ajouter
Tant que M > 29
S=A/M
M=M+2
Fin tant que
Afficher S
et alors ça sera bon
(même si la variable A ne sert à rien et peut être remplacée partout par le nombre constant 1, ça n'empêchera pas l'algo de marcher)
relis mon post pour savoir par quoi remplacer les parties en gras.
la condition du tant que c'est du Français, pas de l'algorithmique :
tant que on n'a pas fini faire ceci cela
ici ce sera donc : tant que M n'est pas > 29
(ce qui se traduit mathématiquement par une autre inégalité sur M que M > 29, là c'est juste des maths sur la significations des signes d'inégalités)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :