erreur de logique introuvable...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
YvesRossignol
Messages : 133
Inscription : lun. 28/mars/2016 19:09

erreur de logique introuvable...

Message par YvesRossignol »

Bonjour, j'ai un erreur de logique que je n'arrive pas à trouver.

mon programme est écrit pour calculer en système métrique et en système anglais. Quand je fait un calcul en système anglais, ça marche sans problème, quand je demande la traduction en système métrique ça marche aussi et autant de fois que je veux. Mais quand je débute et que je change de système d'unités il y a un erreur de 1000X plus petit dans le calcul. J'ai mis le code ainsi que les codes auxiliaires sous ma dropbox.

voici le lien

https://www.dropbox.com/sh/azwlboudokca ... vTl4a?dl=0

exemple de calcul

d = 200 mm
b = 100 mm
fx = fy =fz = 0
mx = my = mz = 1000000 N*m
electrod = 482.6

en anglais

mx = my = mz = 8850745.791 lbf*po
electrod = 70000

voir les video pour plus de détail

il y a aussi quelques video expliquant le problème

Merci cela fait plusieurs jours que je cherche et je ne trouve pas. je veux réutiliser ce code dans plusieurs applications et ça m'aiderait fortement de trouver.

merci infiniment

Yves Rossignol
Yves Rossignol
YvesRossignol
Messages : 133
Inscription : lun. 28/mars/2016 19:09

Re: erreur de logique introuvable...

Message par YvesRossignol »

il faut noter que lorsque l'on débute les calculs par le système anglais tout va bien... les conversions, les calculs... mais pas les ordres de grandeurs.... mais ca reste un exemple

Yves
Yves Rossignol
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: erreur de logique introuvable...

Message par Ar-S »

Difficile de se plonger dans un si gros code.
J'ai remarqué que dans le welds.pb ligne 3185
tu as : fm = mille
Je trouve ça étrange vu qu'on passe en metric et surtout si on regarde dans #Gadget_Calc_US ligne 3095 tu marques fm = 1
Peut être une piste ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: erreur de logique introuvable...

Message par Marc56 »

Comme dit par Ar-S, difficile de trouver dans autant de lignes.
Le 1000 fois plus suggère un passage oublié de mètre en millimètre ?

PS. Pour ton autre problème (fermeture de fenêtre annexe) cela peut se faire facilement grâce aux fonctions Is...

Code : Tout sélectionner

If IsWindow(#...) : CloseWindow(#...) : EndIf
ou avec confirmation:

Code : Tout sélectionner

CloseWindow(#Window_Pref)
If IsWindow(#...)
     If MessageRequester("Confimer", "Faut-il fermer aussi la fenêtre ...", 
                         #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes 
          CloseWindow(#...)
     EndIf
EndIf
:wink:
YvesRossignol
Messages : 133
Inscription : lun. 28/mars/2016 19:09

Re: erreur de logique introuvable...

Message par YvesRossignol »

Bonjour, voici quelques explications. Je fais tous les calculs dans le même système d'unité mais parfois une longueur et en millimètre de façon usuelle pour les ingénieurs tandis que tel autre valeur est en newton*metre.... bon, je fais un facteur de multiplication (fm) pour tenir compte de toutes les unités que l'on prends d'une manière standard. Pour le système anglais je n'avais pas besoin de mettre fm autrement qu'à 1.

ça marche bien sauf au départ.... si je change de système anglais à système métrique sans faire de calcul... là tout est faux...

Je vais trouver... j'avais une piste hier soir et je la suit ce soir...

Yves

Je vais me faire un petit code uniquement pour cette partie et l'intégrer par la suite si ma piste se révèle fausse.
Yves Rossignol
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: erreur de logique introuvable...

Message par djes »

Je vais voir si je peux t'aider, je pense qu'il y a un tout petit bug qui se cache dans la conversion des nombres flottants quelque part (il faut tjrs se méfier avec eux). Tu peux déboguer aussi avec des messagerequester(), ça évite de s'y perdre dans les debug classiques. Il faut bien décomposer les calculs point par point pour repérer les problèmes, par exemple en créant des procédures pour les calculs qui reviennent souvent. Enfin, n'oublie pas que quand ton programme est démarré en mode debug, tu peux revenir sur l'éditeur PB et voir le contenu des variables simplement en passant ton pointeur dessus.
Pour la question sur le bouton quit, tu peux aussi faire un 'end' tout simplement... C'est une question d'habitude...
Petite suggestion, l'utilisation des tabulations pour passer d'un champ à l'autre, et surligner le contenu, ce serait top ; de même qu'un bouton pour recopier des valeurs identiques sur tous les champs x, y et z

Edit : C'est un très long code, difficile à déboguer. Il y a une chose qui me saute aux yeux au niveau de la conversion: tu convertis ta valeur d'une unité à l'autre, ce qui peut entraîner des erreurs de calcul avec les flottants. Il ne faut pas oublier qu'un flottant en informatique est souvent une approximation; à chaque nouveau calcul, tu refais une approximation, ce qui amplifie l'erreur.

Edit2: pour les fenêtres, à défaut de faire une gestion du passage premier plan/arrière plan, utilise la fonction StickyWindow(num_fenêtre,#True) pour toutes.

Edit3: c'est normal que les variables fluxtA, fluxtB, fluxtC soient des entiers ?
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: erreur de logique introuvable...

Message par Zorro »

Enfin, n'oublie pas que quand ton programme est démarré en mode debug, tu peux revenir sur l'éditeur PB et voir le contenu des variables simplement en passant ton pointeur dessus.
ceci fonctionne aussi dans le Debugger si tu laisses ton pointeur sur une variable dans le debugger
donc sans avoir a revenir sur l'editeur ;)
YvesRossignol
Messages : 133
Inscription : lun. 28/mars/2016 19:09

Re: erreur de logique introuvable...

Message par YvesRossignol »

non c'est pas normal que les flux soient des entiers. Je change ça tout de suite. Mais l'erreur est uniquement quand je démarre le programme et que je met en système métrique sans faire de calcul. sinon quand je commence en système américain et que je vais des conversions (plusieurs aller-retour) ca marche.... c'est juste au début... :cry:
Yves Rossignol
Répondre