Page 1 sur 1

calculateur de PGCD

Publié : mer. 31/août/2005 11:20
par scaraber
salut
voila je me sui amuser a faire un calculateur de PGCD le voici

Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_0
  #String_1
  #String_2
  #Button_0
  #Listview_1
  #Text_0
  #Frame3D_0
  #Frame3D_2
  #Frame3D_3
EndEnumeration



  If OpenWindow(#Window_0, 216, 5, 300, 386,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "calculateur PGCD ")
    If CreateGadgetList(WindowID())
      StringGadget(#String_0, 20, 30, 80, 20, "")
      StringGadget(#String_1, 140, 30, 80, 20, "")
      StringGadget(#String_2, 60, 270, 100, 20, "",#PB_String_ReadOnly )
      ButtonGadget(#Button_0, 60, 310, 100, 30, "CALCULER")
      ListViewGadget(#Listview_1, 10, 70, 280, 170)
      TextGadget(#Text_0, 10, 360, 220, 20, "fabriqué par le petit scaraber", #PB_Text_Center | #PB_Text_Border)
      Frame3DGadget(#Frame3D_0, 50, 250, 120, 50, "PGCD")
      Frame3DGadget(#Frame3D_2, 10, 10, 100, 50, "grand nombre")
      Frame3DGadget(#Frame3D_3, 130, 10, 100, 50, "petit nombre")
      
    EndIf
  EndIf

Repeat 

 Event = WindowEvent()
    If Event = #PB_EventGadget
      WaitWindowEvent()
      If EventGadgetID() = #Button_0
        a=Val(GetGadgetText(#String_0))
        b=Val(GetGadgetText(#String_1))
        Dim R.f(30)
        For x=1 To 20
          C.f=a/b
          AddGadgetItem(#Listview_1, Position,"on trouve combien de B=A (nombredeB=A/B)" ):position=position+1
          AddGadgetItem(#Listview_1, Position,Str(C)+"="+Str(a)+"/"+Str(b) ):position=position+1
          F=Int(C)
          AddGadgetItem(#Listview_1, Position,"on rend le nombrer de B en nommbre non décimale" ):position=position+1
          AddGadgetItem(#Listview_1, Position, Str(F)):position=position+1 
          R(x)=a-(b*F)
          AddGadgetItem(#Listview_1, Position,"on calcul le reste" ):position=position+1
          AddGadgetItem(#Listview_1, Position,Str(R(x))+"="+Str(a)+"-"+Str(b)+"*"+Str(F) ):position=position+1
          a=b
          b=R(x)
          AddGadgetItem(#Listview_1, Position, "on met le reste dans B et on met B en A"):position=position+1
          If R(x)=0
            PGCD=R(x-1)
            If R(x-1)=0
              PGCD=1
            EndIf 
            SetGadgetText(#String_2,Str(pgcd))
            
            Goto fin
          EndIf 
        Next x
      EndIf
    EndIf
fin:

Until WindowEvent()=#PB_Event_CloseWindow 
qu'en peser vous ?
++

Publié : mer. 31/août/2005 13:25
par Heis Spiter

Publié : mer. 31/août/2005 13:37
par bombseb
c'est quoi le PGCD ?????

Publié : mer. 31/août/2005 13:59
par scaraber
j'avait pâs vue se post

PGCD =plus grand commun diviseur programme de 3eme..

Publié : mer. 31/août/2005 14:29
par Morsula
J'ai essayé ton programme, ça fonctionne mais... je comprend rien et j'crois que je comprendais jamais, je suis allerique au maths et pourtant j'entre en Terminal BEP comptablité, faut pas chercher à comprendre :D

Publié : mer. 31/août/2005 16:07
par lionel_om
Euh,
* PGCD(16,2) = 1 ??? pour moi ca fait 2 !!!
* PGCD(16,0) = 16 ??? pour moi y'en pas (dc 0)
* PGCD(16,16) = 1 ??? pour moi c'est 16

Tu ne confondrai pas avec PPCM ou un truc du genre ? Ou c'ets moi ki suis à l'ouest ??

Publié : mer. 31/août/2005 18:00
par scaraber
efectivement il ya un bug
je vais le coriger

Publié : mer. 31/août/2005 18:11
par scaraber
coriger

Code : Tout sélectionner

;- Window Constants 
; 
Enumeration 
  #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
  #String_0 
  #String_1 
  #String_2 
  #Button_0 
  #Listview_1 
  #Text_0 
  #Frame3D_0 
  #Frame3D_2 
  #Frame3D_3 
EndEnumeration 



  If OpenWindow(#Window_0, 216, 5, 300, 386,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "calculateur PGCD ") 
    If CreateGadgetList(WindowID()) 
      StringGadget(#String_0, 20, 30, 80, 20, "") 
      StringGadget(#String_1, 140, 30, 80, 20, "") 
      StringGadget(#String_2, 60, 270, 100, 20, "",#PB_String_ReadOnly ) 
      ButtonGadget(#Button_0, 60, 310, 100, 30, "CALCULER") 
      ListViewGadget(#Listview_1, 10, 70, 280, 170) 
      TextGadget(#Text_0, 10, 360, 220, 20, "fabriqué par le petit scaraber", #PB_Text_Center | #PB_Text_Border) 
      Frame3DGadget(#Frame3D_0, 50, 250, 120, 50, "PGCD") 
      Frame3DGadget(#Frame3D_2, 10, 10, 100, 50, "grand nombre") 
      Frame3DGadget(#Frame3D_3, 130, 10, 100, 50, "petit nombre") 
      
    EndIf 
  EndIf 

Repeat 

 Event = WindowEvent() 
    If Event = #PB_EventGadget 
      WaitWindowEvent() 
      If EventGadgetID() = #Button_0 
        a=Val(GetGadgetText(#String_0)) 
        b=Val(GetGadgetText(#String_1)) 
        Dim R.f(30) 
        For x=1 To 20 
          C.f=a/b 
          AddGadgetItem(#Listview_1, Position,"on trouve combien de B=A (nombredeB=A/B)" ):position=position+1 
          AddGadgetItem(#Listview_1, Position,Str(C)+"="+Str(a)+"/"+Str(b) ):position=position+1 
          F=Int(C) 
          AddGadgetItem(#Listview_1, Position,"on rend le nombrer de B en nommbre non décimale" ):position=position+1 
          AddGadgetItem(#Listview_1, Position, Str(F)):position=position+1 
          R(x)=a-(b*F) 
          AddGadgetItem(#Listview_1, Position,"on calcul le reste" ):position=position+1 
          AddGadgetItem(#Listview_1, Position,Str(R(x))+"="+Str(a)+"-"+Str(b)+"*"+Str(F) ):position=position+1 
          a=b 
          b=R(x) 
          AddGadgetItem(#Listview_1, Position, "on met le reste dans B et on met B en A"):position=position+1 
          If R(x)=0
     
          If x=1
          PGCD=F
          
           SetGadgetText(#String_2,Str(pgcd)) 
       Goto fin 
          EndIf 
          
          PGCD=R(x-1) 
            If R(x-1)=0 
              PGCD=1 
            EndIf 
          
            
            Goto fin 
          EndIf 
        Next x 
      EndIf 
    EndIf 
fin: 

Until WindowEvent()=#PB_Event_CloseWindow 

Publié : mer. 31/août/2005 19:18
par scaraber
oups me suis gourer

Code : Tout sélectionner

;- Window Constants 
; 
Enumeration 
  #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
  #String_0 
  #String_1 
  #String_2 
  #Button_0 
  #Listview_1 
  #Text_0 
  #Frame3D_0 
  #Frame3D_2 
  #Frame3D_3 
EndEnumeration 



  If OpenWindow(#Window_0, 216, 5, 300, 386,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "calculateur PGCD ") 
    If CreateGadgetList(WindowID()) 
      StringGadget(#String_0, 20, 30, 80, 20, "") 
      StringGadget(#String_1, 140, 30, 80, 20, "") 
      StringGadget(#String_2, 60, 270, 100, 20, "",#PB_String_ReadOnly ) 
      ButtonGadget(#Button_0, 60, 310, 100, 30, "CALCULER") 
      ListViewGadget(#Listview_1, 10, 70, 280, 170) 
      TextGadget(#Text_0, 10, 360, 220, 20, "fabriqué par le petit scaraber", #PB_Text_Center | #PB_Text_Border) 
      Frame3DGadget(#Frame3D_0, 50, 250, 120, 50, "PGCD") 
      Frame3DGadget(#Frame3D_2, 10, 10, 100, 50, "grand nombre") 
      Frame3DGadget(#Frame3D_3, 130, 10, 100, 50, "petit nombre") 
      
    EndIf 
  EndIf 

Repeat 

 Event = WindowEvent() 
    If Event = #PB_EventGadget 
      WaitWindowEvent() 
      If EventGadgetID() = #Button_0 
        a=Val(GetGadgetText(#String_0)) 
        b=Val(GetGadgetText(#String_1)) 
        Dim R.f(30) 
        For x=1 To 20 
          C.f=a/b 
          AddGadgetItem(#Listview_1, Position,"on trouve combien de B=A (nombredeB=A/B)" ):position=position+1 
          AddGadgetItem(#Listview_1, Position,Str(C)+"="+Str(a)+"/"+Str(b) ):position=position+1 
          F=Int(C) 
          AddGadgetItem(#Listview_1, Position,"on rend le nombrer de B en nommbre non décimale" ):position=position+1 
          AddGadgetItem(#Listview_1, Position, Str(F)):position=position+1 
          R(x)=a-(b*F) 
          AddGadgetItem(#Listview_1, Position,"on calcul le reste" ):position=position+1 
          AddGadgetItem(#Listview_1, Position,Str(R(x))+"="+Str(a)+"-"+Str(b)+"*"+Str(F) ):position=position+1 
          a=b 
          b=R(x) 
          AddGadgetItem(#Listview_1, Position, "on met le reste dans B et on met B en A"):position=position+1 
          If R(x)=0
     
          If x=1
                  a=Val(GetGadgetText(#String_0)) 
          PGCD=A/F
           SetGadgetText(#String_2,Str(pgcd)) 
       Goto fin 
          EndIf 
          
          PGCD=R(x-1) 
            If R(x-1)=0 
              PGCD=1 
            EndIf 
          
            
            Goto fin 
          EndIf 
        Next x 
      EndIf 
    EndIf 
fin: 

Until WindowEvent()=#PB_Event_CloseWindow 

Publié : mer. 31/août/2005 19:59
par Morsula
Moi j'aurais même pas pu dire si le programme fournissait des données véridiques lol J'suis incapable de le faire de tête et même avec une calculatrice :P

Publié : jeu. 01/sept./2005 10:36
par scaraber
lol

Publié : jeu. 01/sept./2005 17:36
par lionel_om
Tiens, sous forme de procedure c'est pas mieux ? :

Code : Tout sélectionner

Procedure PGCD(a, b)

  If a = 0 Or b = 0
    ProcedureReturn 0
  EndIf

  ; swap
  If Abs(b) > Abs(a)
    tmp = a
    a = b
    b = tmp
  EndIf
  
  pgcd = 0
  If (a/b) = (a*1.0)/b
    pgcd = b
  EndIf
  Repeat
    tmp = a - (a/b)*b
    If tmp > 0
      pgcd = tmp
    EndIf
    a = b
    b = tmp
  Until tmp = 0

  ProcedureReturn pgcd

EndProcedure


PGCD(10,2)
PGCD(15,3)
PGCD(18,4)
PGCD(19,0)