voici présisemment mon probleme que je n'arrive pas à remédier. J'ai c message ( voir le sujet) alors que normalement, les nombres manier sont dans la norme.
voici présisemment mon probleme que je n'arrive pas à remédier. J'ai c message ( voir le sujet) alors que normalement, les nombres manier sont dans la norme.
Bonjour !
Sans un morceau de code, il sera difficile de trouver la cause de cette erreur. Est-ce que tu effectues des opérations sur des variables de plusieurs types (par exemple, des Real avec des LongInt) ?
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
Regarde l'aide...
Remplace tes variables réelles par des extended et n'oublie pas d'émuler le coprocesseur arithmétique ( directive de compilation {$N+} )...
a+
PS : désolé ça m'a échappé....
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
mais ça aussi g essayé, mais le problème persiste...
oups decidemment
ha oui, pour la formule. En gros c'est ça.
repeat
x:=x*r*(1-x);
avec chaque variable qui sont de type extended.
[/code]
Donne le reste du code ( autour de la formule ), et la façon dont tu l'appelles si c'est une procédure ou une fonction...
Et utilise la balise "code"....
a+
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Obtenir ce genre d'erreur avec des variables de types extended est assez difficile car elles peuvent stocker des nombres très importants...
Quel est le genre de nombres que tu y stockes ?
Si ce sont des nombres pas très "grands", il vaut mieux utiliser les types simple et double ( un peu plus "compatibles" )...
L'erreur semble venir du fait que si l'on multiplie des valeurs extended qui sont déjà très grandes ( ou très petites, avec beaucoup de décimales ) et que l'on stocke le résultat dans un extended, il y a de très fortes chances pour que le nombre obtenu dépasse...
a+
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Le type Extended stocke des nomrbes très grands, mais si on lui offre un petit infini, Turbo Pascal tire la langue...
Vérifie donc pednant que tu y es que tu n'as pas de division par zéro à quelque part. Quand je dis division par zéro, ce n'est pas forcément "zéro". Ca peut très bien être un nombre extrèmement petit.
Ta formule est : x := x * r * (1 - x);
Vérifie donc que x, ou bien 1 - x ne soit pas trop grand. Et essaie aussi par la même occasion de couper tes calculs en morceaux plus petits : ça peut aider.
Un truc du genre :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4x := x * r; z := 1 - x; x := x * z;
ok merci beaucoup, je crois que c'est ça : x était trop grand
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager