calculateur de PGCD

Programmation d'applications complexes
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

calculateur de PGCD

Message 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 ?
++
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

c'est quoi le PGCD ?????
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

j'avait pâs vue se post

PGCD =plus grand commun diviseur programme de 3eme..
Avatar de l’utilisateur
Morsula
Messages : 72
Inscription : dim. 20/mars/2005 16:38
Localisation : Strasbourg
Contact :

Message 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
Morsula
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 ??
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

efectivement il ya un bug
je vais le coriger
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message 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 
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message 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 
Avatar de l’utilisateur
Morsula
Messages : 72
Inscription : dim. 20/mars/2005 16:38
Localisation : Strasbourg
Contact :

Message 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
Morsula
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

lol
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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)
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre