Algobox, problème pour boucles

Fermé
galaxilobby Messages postés 4 Date d'inscription samedi 5 septembre 2015 Statut Membre Dernière intervention 5 septembre 2015 - Modifié par galaxilobby le 5/09/2015 à 16:08
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 5 sept. 2015 à 16:49

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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
5 sept. 2015 à 15:42
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 samedi 5 septembre 2015 Statut Membre Dernière intervention 5 septembre 2015
Modifié par galaxilobby le 5/09/2015 à 16:08
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > galaxilobby Messages postés 4 Date d'inscription samedi 5 septembre 2015 Statut Membre Dernière intervention 5 septembre 2015
5 sept. 2015 à 16:33
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 samedi 5 septembre 2015 Statut Membre Dernière intervention 5 septembre 2015
5 sept. 2015 à 16:40
D'accord, mais il n'y pas moyen de le résoudre alors ? :/
0
galaxilobby Messages postés 4 Date d'inscription samedi 5 septembre 2015 Statut Membre Dernière intervention 5 septembre 2015
Modifié par KX le 5/09/2015 à 16:52
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 5/09/2015 à 16:53
Ç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