Algobox, problème pour boucles

galaxilobby Messages postés 4 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -

Bonjour,
alors j'ai un problème lorsque je lance mon algorithme pour mon exercice, il me met erreur dépassement de la capacité autorisé par les boucles je vous met une photo de l'algo, pouvez vous m'aider svp ? :X

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Dans l'aide d'Algobox (menu Aide > Aide), il est écrit à la section 3.3 :
    Avertissement : le nombre d'itérations des boucles est limité à 500000 pour des raisons de sécurité.
    Donc si tu as ce message, c'est que tu as dépassé les 500000 itérations, ce qui est probablement dû à une erreur de conception de l'algorithme.
    1
    1. galaxilobby Messages postés 4 Statut Membre
       
      Salut, mais je cherche l'erreur et je ne la trouve pas, pourrai tu m'aider stp je joins une photo a mon topic :)
      0
      1. KX Messages postés 19031 Statut Modérateur 3 020 > galaxilobby Messages postés 4 Statut Membre
         
        Un copier-coller du code ça aurait été plus pratique qu'une image.
        En plus il y a des balises de codes <code></code> pour les mettre en forme...

        Informatiquement, ça plante parce que la valeur de a ne dépasse jamais 20000, en tout cas pas en moins de 500000 tours (ce qui correspond à la valeur de i).

        Mathématiquement, c'est normal, vu que a ne peux jamais atteindre 20000.
        Ce que tu fais, c'est le calcul de la suite :
        u(0) = 7000
        u(n+1) = 0.8*u(n)+4000


        La solution générale étant u(n) = 20000 - 13000*(4/5)^n

        Même si asymptotiquement cette suite converge vers 20000, elle sera toujours strictement en dessous car (4/5)^n est toujours strictement positif.

        Donc tu ne pourras jamais atteindre ou dépasser 20000, ta boucle tourne à l'infini et après 500000 essais AlgoBox se protège et interrompt le programme...
        0
    2. galaxilobby Messages postés 4 Statut Membre
       
      D'accord, mais il n'y pas moyen de le résoudre alors ? :/
      0
    3. galaxilobby Messages postés 4 Statut Membre
       
      Les codes sont avec la nouvelle formule :
      VARIABLES
          n EST_DU_TYPE NOMBRE
          a EST_DU_TYPE NOMBRE
          i EST_DU_TYPE NOMBRE
      DEBUT_ALGORITHME
          i PREND_LA_VALEUR 0
          n PREND_LA_VALEUR 7000
          a PREND_LA_VALEUR 20000-13000*4/5^n
          SI (a==20000) ALORS
          DEBUT_SI
              AFFICHER i
              AFFICHER " année pour que le stade se remplisse."
          FIN_SI
          SINON
          DEBUT_SINON
              TANT_QUE (a<20000) FAIRE
              DEBUT_TANT_QUE
                  n PREND_LA_VALEUR a
                  a PREND_LA_VALEUR 20000-13000*4/5^n
                  i PREND_LA_VALEUR i+1
              FIN_TANT_QUE
          FIN_SINON
      FIN_ALGORITHME
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Ça veut dire quoi le résoudre ? Qu'est-ce que tu cherches à calculer ?

      Le programme ne fait rien après la boucle, donc même si elle se terminait, il n'y a aucun résultat à afficher, du coup je sais pas ce que tu veux obtenir...

      Remarque : ça ne servait à rien de changer la formule, j'ai utilisé la solution pour montrer l'erreur mathématique, mais informatiquement la suite est bonne.
      0