un petit probleme avec mon code.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

un petit probleme avec mon code.

Message par chercheacomprendre »

bonsoir, j'ai un petit problème avec mon code , si je mets comme valeurs pour les calculs de self, 28 en longueur , 1 mm en diametre de fil, et 28 spires , il me dits erreur ! réalisation impossible , mais celà devrait etre spires jointives ... meme chose avec les valeurs de 26, 1 et 26, si non les autres valeurs sont bonnes ... je ne vois pas pourquoi ?...
mon code de calcul de self:

Code : Tout sélectionner

;programme de calcul d'inductance avec la formule de Nagaoka 

;code du 22 février 2009 

Global  L.F, A.D, B.D, C.D, n.D, K.D, rap.D 
Procedure Open_Window() 
  OpenWindow(21, 0, 0, 255, 200, "Calcul de self à air", $CF0001) ; fenetre principale 
  TextGadget(11, 0, 10,   200, 30, "    Diamètre du mandrin en mm") ;a 
  TextGadget(12, 0, 40,  200, 30, "    Longueur de la self en mm") ;b 
  TextGadget(13, 0, 70,  200, 30, "        Diamètre du fil en mm") ;c 
  TextGadget(14, 0, 100,  200, 30, "             Nombre de spires") ;n 
  TextGadget(15, 0, 130, 200, 30, "             Inductance en µH") ;L 
  StringGadget(1, 200, 5,   50, 30, "") ;position a 
  StringGadget(2, 200, 35,  50, 30, "") ;position b 
  StringGadget(3, 200, 65,  50, 30, "") ;position c 
  StringGadget(4, 200, 95,  50, 30, "") ;position n 
  StringGadget(5, 200, 125, 50, 30, "") ;position L 
  
;==== ecriture en fond gras et au centre =====  

  FontID1 = LoadFont(1, "Arial Narrow", 12, #PB_Font_Bold) 
  TextGadget(20,20,170,200,100,"",#PB_Text_Center) 
  SetGadgetFont(20, FontID1) 
  
EndProcedure 
Procedure calcul() 
  
  A.D = ValD(GetGadgetText(1) ) 
  B.D = ValD(GetGadgetText(2) ) 
  C.D = ValD(GetGadgetText(3) ) 
  n.D = ValD(GetGadgetText(4) ) 
  K.D = 5.2 
  
  ;=== rayon théorique suivant formule Nagaoka ===
  
  A=(A+C)/2
  
  ; === conversion des cm en mm ===
  
  A=A/10
  B=B/10
  C=C/10
  ; === message d'erreur si le rapport est pupérieur a 400 ===
  
  If A*B*C*n <>0 
    rap.D = (2*(A/B)) 
    If rap > 400 
    
      MessageRequester("Erreur","Le programme n'est pas prévu pour un tel rapport") 
      
    ElseIf rap >200   : K = 0.011 
    ElseIf rap >100   : K = 0.019 
    ElseIf rap > 75   : K = 0.035 
    ElseIf rap > 50   : K = 0.043  
    ElseIf rap > 25   : K = 0.061  
    ElseIf rap > 10   : K = 0.105  
    ElseIf rap > 9    : K = 0.203  
    ElseIf rap > 8    : K = 0.219  
    ElseIf rap > 7    : K = 0.237  
    ElseIf rap > 6    : K = 0.258  
    ElseIf rap > 5    : K = 0.283  
    ElseIf rap > 4    : K = 0.32  
    ElseIf rap > 3.5  : K = 0.365  
    ElseIf rap > 3    : K = 0.394  
    ElseIf rap > 2.5  : K = 0.429  
    ElseIf rap > 2    : K = 0.472  
    ElseIf rap > 1.75 : K = 0.526  
    ElseIf rap > 1.5  : K = 0.558  
    ElseIf rap > 1.25 : K = 0.595  
    ElseIf rap > 1    : K = 0.638 
    ElseIf rap > 0.9  : K = 0.688 
    ElseIf rap > 0.8  : K = 0.711 
    ElseIf rap > 0.7  : K = 0.735 
    ElseIf rap > 0.6  : K = 0.761 
    ElseIf rap > 0.5  : K = 0.789 
    ElseIf rap > 0.4  : K = 0.818 
    ElseIf rap > 0.3  : K = 0.85 
    ElseIf rap > 0.25 : K = 0.884 
    ElseIf rap > 0.2  : K = 0.902 
    ElseIf rap > 0.15 : K = 0.92 
    ElseIf rap > 0.10 : K = 0.939 
    ElseIf rap > 0.05 : K = 0.959 
    ElseIf rap > 0.02 : K = 0.97 
    ElseIf rap = 0    : K = 1 
    EndIf 
   ;=== formule du calcul de l'inductance Nagaoka === 
   
    L = (0.0395 * Pow(A*n,2) * K) / B 
    
    ; position 5 du résultat avec deux chiffres apres la virgule ===
    
    SetGadgetText(5, StrF(L,2) ) 
    
    ; ===conditions du message en gras ===
    
    If n*C =B 
      Mess.s="Spires Jointives" 
    ElseIf n*C>B 
      Mess.s="Réalisation Impossible " 
    ElseIf n*C<B 
      Mess.s="Spires Non Jointives" 
    EndIf 
    
    SetGadgetText(20,Mess) 
  EndIf 
EndProcedure 

Open_Window() 
Repeat 
  Event = WaitWindowEvent() 
  GadgetID = EventGadget() 
  EventType = EventType() 
  If EventType = #PB_EventType_Change 
    calcul() 
    EndIf 
Until Event = 16 
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

parce que pour PB 2.8 * 1.0 = 2.7999999999 et non 2.8.

donc n*C = B ne se vérifiera jamais. A toi de trouver la parade.

Bonne soiré ;)

[EDIT] petite précision. C'est un soucis qui n'est d'ailleurs pas lié à PB lui même...
Dernière modification par tmyke le sam. 28/févr./2009 10:00, modifié 1 fois.
Force et sagesse...
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

condition des messages sur calcul de selfs

Message par chercheacomprendre »

tmyke a écrit :parce que pour PB 2.8 * 1.0 = 2.7999999999 et non 2.8.

donc n*C = B ne se vérifiera jamais. A toi de trouver la parade.

Bonne soiré ;)

[EDIT] petite précision, sur certaines machines (sous-entend sur certains processeurs). C'est un soucis qui n'est d'ailleurs pas lié à PB lui même...
bonjour, oui j'ai vu le problème, j'ai essayé de ruser mais celà ne marche pas:

Code : Tout sélectionner

   
    Debug (b)
    
    If n*C =B Or n*c=B-0.01
      Mess.s="Spires Jointives" 
    ElseIf n*C>B 
      Mess.s="Réalisation Impossible " 
    ElseIf n*C<B 
      Mess.s="Spires Non Jointives" 
    EndIf 
    
je vais voir si je trouve autre chose.
salut.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Cacul faux

Message par MLD »

a.d = 2.8 * 1.0
Debug StrD(a.d)

chez moi ceci fonctionne
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

petit probleme de condition texte

Message par chercheacomprendre »

MLD a écrit :a.d = 2.8 * 1.0
Debug StrD(a.d)

chez moi ceci fonctionne
oui le résultat est ok au niveau du résultat du "b" 2.8000000 mais sur le condition il me sort réalisation impossible pour uniquement les valeurs 28 de longueur, 1 de diametre de fil et 28 de nombre de spires, en principe il devrait m'indiqué spires jointives !...
pour d'autres valeurs c'est bon .

alors je ne vois pas ou est le hic ...

bon week-end.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Erreur de calcul suite

Message par MLD »

Le problème vient de ta conversion en mm. Ce n'est pas cohèrent avec ce que tu affiches sur ta fenêtre. Pour entrer les valeurs. tu indiques de tous mettre en mm alors que tu fais une convertion Cm /mm. Si tu enlève la conversion, ceci est OK. Regarde le code.



Code : Tout sélectionner

;programme de calcul d'inductance avec la formule de Nagaoka 

;code du 22 février 2009 

Global  L.F, A.D, B.D, C.D, n.D, K.D, rap.D 
Procedure Open_Window() 
  OpenWindow(21, 0, 0, 255, 200, "Calcul de self à air", $CF0001) ; fenetre principale 
  TextGadget(11, 0, 10,   200, 30, "    Diamètre du mandrin en mm") ;a 
  TextGadget(12, 0, 40,  200, 30, "    Longueur de la self en mm") ;b 
  TextGadget(13, 0, 70,  200, 30, "        Diamètre du fil en mm") ;c 
  TextGadget(14, 0, 100,  200, 30, "             Nombre de spires") ;n 
  TextGadget(15, 0, 130, 200, 30, "             Inductance en µH") ;L 
  StringGadget(1, 200, 5,   50, 30, "") ;position a 
  StringGadget(2, 200, 35,  50, 30, "") ;position b 
  StringGadget(3, 200, 65,  50, 30, "") ;position c 
  StringGadget(4, 200, 95,  50, 30, "") ;position n 
  StringGadget(5, 200, 125, 50, 30, "") ;position L 
  
;==== ecriture en fond gras et au centre =====  

  FontID1 = LoadFont(1, "Arial Narrow", 12, #PB_Font_Bold) 
  TextGadget(20,20,170,200,100,"",#PB_Text_Center) 
  SetGadgetFont(20, FontID1) 
  
EndProcedure 
Procedure calcul() 
  
  A.D = ValD(GetGadgetText(1) ) 
  B.D = ValD(GetGadgetText(2) ) 
  C.D = ValD(GetGadgetText(3) ) 
  n.D = ValD(GetGadgetText(4) ) 
  K.D = 5.2 
  
  ;=== rayon théorique suivant formule Nagaoka === 
  
  A=(A+C)/2 
  
  ; === conversion des cm en mm === 
  
;   A=A/10 
;   B=B/10 
;   C=C/10 
  ; === message d'erreur si le rapport est pupérieur a 400 === 
  
  If A*B*C*n <>0 
    rap.D = (2*(A/B)) 
    If rap > 400 
    
      MessageRequester("Erreur","Le programme n'est pas prévu pour un tel rapport") 
      
    ElseIf rap >200   : K = 0.011 
    ElseIf rap >100   : K = 0.019 
    ElseIf rap > 75   : K = 0.035 
    ElseIf rap > 50   : K = 0.043  
    ElseIf rap > 25   : K = 0.061  
    ElseIf rap > 10   : K = 0.105  
    ElseIf rap > 9    : K = 0.203  
    ElseIf rap > 8    : K = 0.219  
    ElseIf rap > 7    : K = 0.237  
    ElseIf rap > 6    : K = 0.258  
    ElseIf rap > 5    : K = 0.283  
    ElseIf rap > 4    : K = 0.32  
    ElseIf rap > 3.5  : K = 0.365  
    ElseIf rap > 3    : K = 0.394  
    ElseIf rap > 2.5  : K = 0.429  
    ElseIf rap > 2    : K = 0.472  
    ElseIf rap > 1.75 : K = 0.526  
    ElseIf rap > 1.5  : K = 0.558  
    ElseIf rap > 1.25 : K = 0.595  
    ElseIf rap > 1    : K = 0.638 
    ElseIf rap > 0.9  : K = 0.688 
    ElseIf rap > 0.8  : K = 0.711 
    ElseIf rap > 0.7  : K = 0.735 
    ElseIf rap > 0.6  : K = 0.761 
    ElseIf rap > 0.5  : K = 0.789 
    ElseIf rap > 0.4  : K = 0.818 
    ElseIf rap > 0.3  : K = 0.85 
    ElseIf rap > 0.25 : K = 0.884 
    ElseIf rap > 0.2  : K = 0.902 
    ElseIf rap > 0.15 : K = 0.92 
    ElseIf rap > 0.10 : K = 0.939 
    ElseIf rap > 0.05 : K = 0.959 
    ElseIf rap > 0.02 : K = 0.97 
    ElseIf rap = 0    : K = 1 
    EndIf 
   ;=== formule du calcul de l'inductance Nagaoka === 
    
    L = (0.0395 * Pow(A*n,2) * K) / B 
    
    ; position 5 du résultat avec deux chiffres apres la virgule === 
    
    SetGadgetText(5, StrF(L,2) ) 
    
    ; ===conditions du message en gras === 
    
    If n*C =B 
      Mess.s="Spires Jointives" 
    ElseIf n*C>B 
    ;Debug StrD(C) 
    ;Debug StrD(B)
      Mess.s="Réalisation Impossible " 
    ElseIf n*C<B 
      Mess.s="Spires Non Jointives" 
    EndIf 
    
    SetGadgetText(20,Mess) 
  EndIf 
EndProcedure 

Open_Window() 
Repeat 
  Event = WaitWindowEvent() 
  GadgetID = EventGadget() 
  EventType = EventType() 
  If EventType = #PB_EventType_Change 
    calcul() 
    EndIf 
Until Event 
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

Re: Erreur de calcul suite

Message par chercheacomprendre »

MLD a écrit :Le problème vient de ta conversion en mm. Ce n'est pas cohèrent avec ce que tu affiches sur ta fenêtre. Pour entrer les valeurs. tu indiques de tous mettre en mm alors que tu fais une convertion Cm /mm. Si tu enlève la conversion, ceci est OK. Regarde le code.

oui j'ai vu, merci pour les infos, mais c'est drole que ce probleme est uniquement visible sur deux valeurs 28-1-28 et 29-1-29 sur les autres valeurs c'est bon, enfin les mysteres de l'informatiques ...
encore merci et bon week end a toi.

yves

PS/ je vais me faire engueulé , car j'ai oublié de razer le programme la derniere fois ...

Dobro dit: :twisted: :lol: :lol:
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Message par zaphod »

Sinon on peut faire :

Code : Tout sélectionner


;programme de calcul d'inductance avec la formule de Nagaoka 

;code du 22 février 2009 

Global  L.F, A.D, B.D, C.D, n.D, K.D, rap.D 
Procedure Open_Window() 
  OpenWindow(21, 0, 0, 255, 200, "Calcul de self à air", $CF0001) ; fenetre principale 
  TextGadget(11, 0, 10,   200, 30, "    Diamètre du mandrin en mm") ;a 
  TextGadget(12, 0, 40,  200, 30, "    Longueur de la self en mm") ;b 
  TextGadget(13, 0, 70,  200, 30, "        Diamètre du fil en mm") ;c 
  TextGadget(14, 0, 100,  200, 30, "             Nombre de spires") ;n 
  TextGadget(15, 0, 130, 200, 30, "             Inductance en µH") ;L 
  StringGadget(1, 200, 5,   50, 30, "") ;position a 
  StringGadget(2, 200, 35,  50, 30, "") ;position b 
  StringGadget(3, 200, 65,  50, 30, "") ;position c 
  StringGadget(4, 200, 95,  50, 30, "") ;position n 
  StringGadget(5, 200, 125, 50, 30, "") ;position L 
  
;==== ecriture en fond gras et au centre =====  

  FontID1 = LoadFont(1, "Arial Narrow", 12, #PB_Font_Bold) 
  TextGadget(20,20,170,200,100,"",#PB_Text_Center) 
  SetGadgetFont(20, FontID1) 
  
EndProcedure 
Procedure calcul() 
  
  A.D = ValD(GetGadgetText(1) ) 
  B.D = ValD(GetGadgetText(2) ) 
  C.D = ValD(GetGadgetText(3) ) 
  n.D = ValD(GetGadgetText(4) ) 
  K.D = 5.2 
  
  ; ===zaphod
  ; ===conditions du message en gras === 
    
    If n*C =B 
      Mess.s="Spires Jointives" 
    ElseIf n*C>B 
      Mess.s="Réalisation Impossible " 
    ElseIf n*C<B 
      Mess.s="Spires Non Jointives" 
    EndIf 
    
    SetGadgetText(20,Mess) 
  
  ;=== rayon théorique suivant formule Nagaoka === 
  
  A=(A+C)/2 
  
  ; === conversion des cm en mm === 
  
  A=A/10 
  B=B/10 
  C=C/10 
  ; === message d'erreur si le rapport est pupérieur a 400 === 
  
  If A*B*C*n <>0 
    rap.D = (2*(A/B)) 
    If rap > 400 
    
      MessageRequester("Erreur","Le programme n'est pas prévu pour un tel rapport") 
      
    ElseIf rap >200   : K = 0.011 
    ElseIf rap >100   : K = 0.019 
    ElseIf rap > 75   : K = 0.035 
    ElseIf rap > 50   : K = 0.043  
    ElseIf rap > 25   : K = 0.061  
    ElseIf rap > 10   : K = 0.105  
    ElseIf rap > 9    : K = 0.203  
    ElseIf rap > 8    : K = 0.219  
    ElseIf rap > 7    : K = 0.237  
    ElseIf rap > 6    : K = 0.258  
    ElseIf rap > 5    : K = 0.283  
    ElseIf rap > 4    : K = 0.32  
    ElseIf rap > 3.5  : K = 0.365  
    ElseIf rap > 3    : K = 0.394  
    ElseIf rap > 2.5  : K = 0.429  
    ElseIf rap > 2    : K = 0.472  
    ElseIf rap > 1.75 : K = 0.526  
    ElseIf rap > 1.5  : K = 0.558  
    ElseIf rap > 1.25 : K = 0.595  
    ElseIf rap > 1    : K = 0.638 
    ElseIf rap > 0.9  : K = 0.688 
    ElseIf rap > 0.8  : K = 0.711 
    ElseIf rap > 0.7  : K = 0.735 
    ElseIf rap > 0.6  : K = 0.761 
    ElseIf rap > 0.5  : K = 0.789 
    ElseIf rap > 0.4  : K = 0.818 
    ElseIf rap > 0.3  : K = 0.85 
    ElseIf rap > 0.25 : K = 0.884 
    ElseIf rap > 0.2  : K = 0.902 
    ElseIf rap > 0.15 : K = 0.92 
    ElseIf rap > 0.10 : K = 0.939 
    ElseIf rap > 0.05 : K = 0.959 
    ElseIf rap > 0.02 : K = 0.97 
    ElseIf rap = 0    : K = 1 
    EndIf 
   ;=== formule du calcul de l'inductance Nagaoka === 
    
    L = (0.0395 * Pow(A*n,2) * K) / B 
    
    ; position 5 du résultat avec deux chiffres apres la virgule === 
    
    SetGadgetText(5, StrF(L,2) ) 
    
    
  EndIf 
EndProcedure 

Open_Window() 
Repeat 
  Event = WaitWindowEvent() 
  GadgetID = EventGadget() 
  EventType = EventType() 
  If EventType = #PB_EventType_Change 
    calcul() 
    EndIf 
Until Event = 16 


Z@ph0d//
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

calcul de self

Message par chercheacomprendre »

zaphod a écrit : Sinon on peut faire :


;programme de calcul d'inductance avec la formule de Nagaoka
oui salut, tu as faits quoi comme modif ? je ne la vois pas ...

Yves
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut ChercheAComprendre,

Tu peux "tricher" un peu... Par exemple, (et c'est le grand problème entre le perfectionnisme de la théorie et les aléas de la pratique) tu peux tester une valeur approchée d'un seuil, au lieu de tester le simple seuil en lui-même.

Une condition numérique ("a égal b ?"), ça n'est jamais qu'une soustraction. En effet:

Code : Tout sélectionner

(a = b)?
revient à écrire

Code : Tout sélectionner

(a - b = 0)?
Comme tu remarques qu'il te faut une tolérance, minime, mais nécessaire, au lieu du modèle que tu uses actuellement:

Code : Tout sélectionner

If x = Seuil: Reponse = "Egalité": EndIf
Tu peux faire ce remplacement:

Code : Tout sélectionner

If Abs(x - Seuil) > Tolerance: Reponse = "Egalité": EndIf
Avec une tolérance de 0.1 (/!\ ==>> ça doit être un nombre flottant)
Abs(x) étant la valeur absolue de n. Utiliser Abs() est une astuce qui t'évite d'écrire:
If ((x - Seuil) > -Tolerance) And ((x - Seuil) < +Tolerance)
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

calcul de self tolérence + ou -

Message par chercheacomprendre »

Oui merci Ollivier des bons conseils, je note , j'ai regardé aussi sur les "tuto" du site c'est tres interressant pour un novice que je suis...
bon dimanche à toi.

Yves.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Code : Tout sélectionner

If Abs(x - Seuil) > Tolerance: Reponse = "Egalité": EndIf 
chercheacomprendre a écrit :Oui merci Ollivier des bons conseils, je note
/!\ Attention, j'ai fait une faute. A mon avis, mes "bons conseils" n'ont pas dû t'aider lourd si tu les as respecté. J'ai inversé par mégarde le signe < dans la condition. La correction, c'est ça:

Code : Tout sélectionner

If Abs(x - Seuil) < Tolerance: Reponse = "Egalité": EndIf 
Peut se traduire par « Si la distance entre x et le seuil est plus petite que la tolérance, alors on estime avoir une égalité».
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Tu peux exécuter ce code pour y voir plus clair dans mes propos:

Code : Tout sélectionner

Structure ZoneInfo
   LMax.L ; Largeur : Maximum
   HMax.L ; Hauteur : Maximum
   LMil.L ; Largeur : Milieu
   HMil.L ; Hauteur : Milieu
   LQua.L ; Largeur : Milieu de la partie gauche
   HQua.L ; Hauteur : Milieu de la partie haute
   L3Qu.L ; Largeur : Milieu de la partie droite
   H3Qu.L ; Hauteur : Milieu de la partie basse
   LTie.L ; Largeur : Tiers gauche
   HTie.L ; Hauteur : Tiers haut
   L2Ti.L ; Largeur : Tiers droit
   H2Ti.L ; Hauteur : Tiers bas
EndStructure

Define Zone.ZoneInfo
With Zone
   ExamineDesktops()
   \LMax = DesktopWidth(0)
   \HMax = DesktopHeight(0)
   \LMil = \LMax / 2
   \HMil = \HMax / 2
   \LQua = \LMax / 4
   \HQua = \HMax / 4
   \L3Qu = \LQua * 3
   \H3Qu = \HQua * 3
   \LTie = \LMax / 3
   \HTie = \HMax / 3
   \L2Ti = \LTie * 2
   \H2Ti = \HTie * 2
   DesktopDepth(0)

   OpenWindow(0, 0, 0, \LMax, \HMax, "", $80000000)
   Repeat
      StartDrawing(WindowOutput(0) )
         Box(0, 0, \LMax, \HMax, #White)
         DrawingMode(#PB_2DDrawing_Transparent)
         DrawText(0, 0, "Alt+F4 pour quitter", #Black)
         LineXY(\LMil, \HQua, \LMil, \H3Qu, #Black)
         Line(\LMil - 10, \HMil, 20, 0, #Black)
         Line(\LMil - 5, \HTie, 10, 0, #Black)
         Line(\LMil - 5, \H2Ti, 10, 0, #Black)
         DrawText(\LMil - 4, \HQua - 24, "x")
         DrawText(\LMil + 15, \HMil - 8, "Seuil")
         DrawText(\LMil + 15, \HTie - 8, "Seuil + Tolérance")
         DrawText(\LMil + 15, \H2Ti - 8, "Seuil - Tolérance")
         DrawText(0, \HQua - 96, "On estime que x est à peu près égal au « seuil » :")
         DrawText(\LQua / 2, \HQua - 32, "Si  x > (Seuil - Tolerance)")
         DrawText(\LQua / 2, \HQua, "ET")
         DrawText(\LQua / 2, \HQua + 32, "Si  x < (Seuil + Tolerance)")
      StopDrawing()
   Until WaitWindowEvent() = 16
   CloseWindow(0)
EndWith
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

Message par chercheacomprendre »

[quote="Ollivier"]

oui j'ai vu, pour les maxi et les mini , on peut tout faire avec le purebasic au niveau graphique , c'est super, il suffit de bien connaitre le language purebasic , mais je ne suis pas encore arriver a ce stade ...
mais c'est bon à savoir.
je garde ton code comme référence.
encore merci pour tes infos , c'est sympa de ta part.
bonne soirée.

Yves
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Yves

Je pense que tu ne saisis pas exactement mon objectif.

Dans l'ordre:

1) Tu as un problème particulier avec ton code.
>> Une condition "If" te joue un mauvais tour

2) Je peux te donner ton code corrigé avec la solution à ton problème

3) Seulement, je préfère que tu cherches par toi-même la solution

4) Mon dernier code, ce qui m'importe ce n'est pas que tu comprennes ce code qui n'a plus rien à voir avec TON code, MAIS c'est que tu comprennes le schéma que ce code affiche.

5) Dans ton code, tu as 3 conditions
(c1) Est-ce supérieur?
(c2) Est-ce égal?
(c3) Est-ce inférieur?
6) Il n'y a QUE la condition (c2) à corriger (une seule ligne!)

7) Au lieu d'écrire "If NombreDeCarotte = NombreDePatate",
il te faut écrire

Code : Tout sélectionner

Tolerance.F = 0.2
If Abs(NombreDeCarotte - NombreDePatate) < Tolerance : etc... : EndIf
C'est tout! Et ton code marchera correctement!

Donc, ce que j'attends c'est que tu postes ton code corrigé, pour que je vois s'il y a éventuellement d'autres détails à voir!! :D

Voilà, bon courage!
Répondre