erreur de logique introuvable...
-
- Messages : 133
- Inscription : lun. 28/mars/2016 19:09
erreur de logique introuvable...
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
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
-
- Messages : 133
- Inscription : lun. 28/mars/2016 19:09
Re: erreur de logique introuvable...
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
Yves Rossignol
Re: erreur de logique introuvable...
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 ?
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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: erreur de logique introuvable...
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...
ou avec confirmation:

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
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

-
- Messages : 133
- Inscription : lun. 28/mars/2016 19:09
Re: erreur de logique introuvable...
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.
ç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
Re: erreur de logique introuvable...
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 ?
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 ?
Re: erreur de logique introuvable...
ceci fonctionne aussi dans le Debugger si tu laisses ton pointeur sur une variable dans le debuggerEnfin, 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.
donc sans avoir a revenir sur l'editeur

-
- Messages : 133
- Inscription : lun. 28/mars/2016 19:09
Re: erreur de logique introuvable...
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... 

Yves Rossignol