Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme

Posté par
SandyLeffa
17-05-17 à 14:38

Bonjour Julien dit qu'il peut parcourir 90 km en nageant le premier jour il parcourt 4 km mais chaque jour la fatigue s'accumule et sa performance diminue de 5 % on note dn la distance parcourue durant le énième jour ainsi d1 = 4.

Q= 0,95 et de 1er thermes d1= 4 et dn= 4×  0,95^n

Sn est le nb de  km parcouru au bout de n jours
Sn = 4× (1-0,95^n)/(1-0,95)

Julien décide que 60 km sera une distance tout à fait honorable déterminer le nombre minimal de jours qui seront nécessaires pour parcourir les 60km -> 28 jours

  écrire un algorithme sur votre copie permettant d'afficher le résultat précédent

Pouvez vous m'aider pour
Écrire l'algorithme svp

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 15:01

Bonjour,

écrire un algorithme c'est avant tout être conscient de la méthode et des opérations exactes que l'on appliquerait soi-même à la main pour résoudre le problème
et de décrire explicitement toutes ces opérations et leur enchainement.

à la main on pourrait faire comme ça

je pars de d = 4
et de la distance totale S = 4
(1er jour appelé n = 1)

ensuite tant que je n'ai pas effectué au moins 60 km (tant que la distance totale S est < 60)
j'ajoute un jour :
calcul de la distance parcourue ce jour là
accumulation de cette distance dans la distance totale

à toi.

(de traduire ça mis en forme de façon "à la mode des algorithmes")

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 15:14

Variables  n entiers naturels u est un réel
Entrée Saisir la valeur de n
Début traitement u prend la valeur 3
tant que u <60
Pour i allant de 1 à u  prend la valeur 4×(1-0,95^n)/(1-0,95)
Afficher u
Fin Pour

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 15:49

1) tu n'as pas suivi la méthode que je proposais mais qu'à cela ne tienne..

dans ma méthode je me fiche de savoir que la formule de la somme est 4×(1-0,95^n)/(1-0,95)

je calcule cette somme pas à pas en ajoutant explicitement chacune des distances individuelles de chaque jour

tu veux faire autrement :
utiliser cette formule pour chercher le plus petit n tel que 4×(1-0,95^n)/(1-0,95) > 60
pourquoi pas. c'est ton droit le choix de la méthode.

2) la traduction de cette méthode maintenant.

Variables n entiers naturels u est un réel OK
Entrée Saisir la valeur de n absurde, vu que n on ne le connait pas, on le cherche.
comment pourrait on en demander la valeur avant même de l'avoir trouvée ??
Début traitement u prend la valeur 3 d'où diable sort cette valeur ???
tant que u <60 OK tant qu'on n'a pas encore parcouru les 60km en tout
Pour i allant de 1 à u ... absurde, u n'est pas un nombre entier mais la distance totale parcourue
de plus il n'y a aucune boucle "pour" à écrire ici.
une boucle pour c'est pour répéter quelque chose un nombre de fois connu au moment où on entre dans cette boucle
ici le nombre de calculs à effectuer est à priori inconnu
... prend la valeur 4×(1-0,95^n)/(1-0,95) qu'est ce donc qui "prend la valeur" ???

tu voulais dire
pour i allant de 1 à ... va savoir quoi
u prend la valeur 4×(1-0,95^n)/(1-0,95)

???
faut pas mélanger ainsi une structure de boucle "pour" et une affectation "prend la valeur"

Afficher u pourquoi pas, tu afficheras toutes les valeurs de la distance cumulée à la fin de chaque jour
Fin Pour la boucle ce n'est pas une boucle "pour" (deja dit) mais la boucle "tant que"

bref il n'y a pas grand chose de correct là dedans

on pourrait imaginer

Variables n entiers naturels u est un réel
Entrée Saisir la valeur de n aucune
Début traitement
u prend la valeur 4 (la distance au premier jour)
tant que u <60
Pour i allant de 1 à pas de "pour" du tout
u prend la valeur 4×(1-0,95^n)/(1-0,95)
Afficher u
Fin tantque

ça ça marche
mais est ce que ça répond au problème ?

cet algorithme va afficher successivement les valeurs cumulées jour après jour, en s'arrêtant dès qu'elle devient > 60s

l'utilisateur devra compter les lignes affichées pour savoir au bout de combien de jours on arrive à > 60

on demande que le programme affiche ce nombre de jours,
le nombre de fois qu'il a exécuté la boucle "tant que"
et pour ça il faut les compter (le programme doit les compter lui-même)

c'est à ça que doit servir la variable n
et quand tout est fini (après le "fin tant que") le programme devra afficher cette valeur de n

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 16:01

Ah merci beaucoup pour TOUTES cette description tres précise.

    Variables  n entiers naturels u est un réel
Entrée
Début traitement
u prend la valeur 4
tant que u <60
    u  prend la valeur 4×(1-0,95^n)/(1-0,95)
Afficher u
Fin tantque

Donc cette algorithme fonctionne mais il faudrait rajouté qqchose pour qu'il affiche seul le nb de jours .

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 16:10

bein oui

c'esb bie ce que j'ai dit à la fin. relis, tout y est dit

je ne vais pas tout te faire quand même
comment compter ?
facile
1
1+1 = 2
2+1 = 3
3+1 = 4
...
et ça doit se faire dans la variable n ...
et dans la boucle puisqu'on veut compter le nombre de fois où on est passé par là.

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 16:15

Je remplace n par n+1 cest ça ?

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 16:21

oui
mais :

où ça ?
et initialisation ?
et affichage ?

mets ça en forme en l'intégrant dans l'algo précédent.

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 17:08

N+1 dans la formule

Initialisation avant "début traitement "
??

En fait  jsp :/

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 17:40

en fait l'algorithme précédent ne fonctionnait pas (lu trop vite) car "n" n'avait aucune valeur
il était donc incapable de calculer "4×(1-0,95^n)/(1-0,95)"

tu dois initialiser à 1 (au départ on a 1 jour)
puis dans la boucle ajouter 1 à ce n pour traiter le "jour suivant" (le calcul de la somme au bout de n jours)

Variables  n entiers naturels, u est un réel
Entrée
Début traitement
                          \
u prend la valeur 4        |   quelque part dans cette partie on initialise n à 1 (1er jour)
                          /    par un "n prend la valeur 1"
tant que u <60
                                                 \  quelque part dans cette partie on doit passer au jour suivant
    u  prend la valeur 4×(1-0,95^n)/(1-0,95)      |  par un "n prend la valeur n+1"
    Afficher u (attention il est dans la boucle)  |
                                                 /
Fin tantque
              \
              |      et quelque part là dedans on doit afficher le résultat final
              /      par un "afficher n"



à toi de voir les emplacements précis (logiques) avant ou après les instructions déja écrites dans chaque morceau
(le vrai problème est doit on le mettre avant ou après le calcul, dans la boucle "tant que")

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 17:53


Variables  n entiers naturels, u est un réel
Entré
u prend la valeur 4 
initialisation  n prend la valeur 1
tant que u <60
   |  u  prend la valeur 4×(1-                               |0,95^n+1)/(1-0,95)     
  |  Afficher u                     
Fin tanque
sortie
 Afficher n

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 18:17

si tu fais figurer explicitement une section "initialisation" dans l'algorithme, l'initialisation c'est de tout ce qui doit être initialisé
aussi bien n que u
et si on fait figurer explicitement une section "initialisation" il est d'usage de faire figurer explicitement la section "traitement :"

Variables : n entiers naturels, u est un réel
Entrée :
initialisation :
u prend la valeur 4
n prend la valeur 1
[traitement :]
tant que u <60
etc


il manque l'instruction "n prend la valeur n+1" dans la boucle
ça ne veut pas dire écrire quelque part dans les formules "n+1" là où on avait écrit "n" !!
ça ne changerait pas le contenu de la variable n
juste ajouterait 1 à une certaine valeur intermédiaire au cours de ce calcul dans ce calcul et nulle part ailleurs

ce qu'il faut c'est une vraie instruction
une vraie opération à faire : augmenter de 1 le contenu de la variable n, "physiquement"
par un "n prend la valeur" seule instruction qui peut modifier le contenu de cette variable.

et il y a un schmillblik de copier-collé raté dans la formule
qui de plus est peut-être bien désormais fausse (ça dépend où on met le "n prend la valeur n+1")

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 18:21

Variables  n entiers naturels, u est un réel
Entré
initiation
u prend la valeur 4 
  n prend la valeur 1 + n
tant que u <60
   |  u  prend la valeur 4×(1-0,95^n)/(1-0,95)     
  |  Afficher u                     
Fin tanque
sortie
 Afficher n

Posté par
mathafou Moderateur
re : Algorithme 17-05-17 à 18:40

bon je laisse tomber tu ne comprends pas le français


Variables n entiers naturels, u est un réel
Entré
e
initialisation
u prend la valeur 4

n prend la valeur 1 + n je n'ai JAMAIS dit de le mettre là celui là !!
de plus n n'est pas initialisé maintenant !! on est incapable de calculer 1+n, car la valeur de n est inconnue,
donc on ne sait pas quoi mettre dans n comme résultat de ce calcul là
tant que u <60
| u prend la valeur 4×(1-0,95^n)/(1-0,95)
| Afficher u
Fin tanque
sortie
Afficher n


après toutes les discussions et explications détaillée en français avec des accolades pour montrer précisément où il fallait ajouter ce qu'on devait ajouter et même l'écriture exacte de ce qu'il fallait ajouter, si tu ne comprend pas c'est sans espoir

relis ce qui a été dit

depuis la discussion de 17:40 qui disait déja tout, il était immédiat d'écrire proprement

Variables n entiers naturels, u est un réel
Entrée
initialisation
u prend la valeur 4
n prend la valeur 1
traitement :
tant que u <60
| n prend la valeur n+1
| u prend la valeur 4×(1-0,95^n)/(1-0,95)
| Afficher u
Fin tanque
sortie
Afficher n

(les mots clés en italique sont un peu optionnels et font un de ces effets ringard, mais bon, si on les mets autant les mettre tous y compris le mot "traitement")

Posté par
SandyLeffa
re : Algorithme 17-05-17 à 19:17

Ah mais vu comme ça sa parfait logique en fait . Merci de votre aide encore désolé pour mes incompréhensions



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !