Algobox, problème pour boucles

galaxilobby Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -

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

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
galaxilobby Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > galaxilobby Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
galaxilobby Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord, mais il n'y pas moyen de le résoudre alors ? :/
0
galaxilobby Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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