PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 19:00

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 54 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante
Auteur Message
 Sujet du message:
MessagePosté: Dim 16/Oct/2005 10:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 16:22
Messages: 1092
Localisation: 76
Voila Sigma majucule (Σ) et Pi majuscule (Π) :
Code:
Procedure SigmaM(Limite, Indice, Exp)
  Total = 0
  For k = Indice To Limite Step 1
    Total = Total + Pow(k, Exp)
  Next k
  ProcedureReturn Total
EndProcedure

Procedure PiM(Limite, Indice, Exp)
  Total = 1
  For k = Indice To Limite Step 1
    Total = Total * Pow(k, Exp)
  Next k
  ProcedureReturn Total
EndProcedure
Corrigez (et prévenez-moi :P), si j'ai commis des erreurs...

_________________
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 10/Avr/2006 12:57 
Hors ligne

Inscription: Ven 15/Juil/2005 17:32
Messages: 362
Salut
voici un petit code pour convertir des angle en radian degre etc
Dite moi ce que vous en pencer

"ConvertAngle(Angle,enter,sortie)" se trouve dans ma lib qui est en download dans la partie annonce
voici son code:

Code:
ProcedureDLL.f ConvertAngle(Angle.f,typeentre,typesorti)
  PI.f = 3.1415926
 
  If typesorti=1
    If typeentre=2
      Angles.f=180 * (Angle.f) / 200
    EndIf
    If typeentre=3
      Angles.f=180 * (Angle.f) / PI.f
    EndIf   
  EndIf 
 
  If typesorti=2
    If typeentre=1
      Angles.f=200 * (Angle.f) / 180
    EndIf
    If typeentre=3
      Angles.f=200 * (Angle.f) / PI.f
    EndIf   
  EndIf 
 
  If typesorti=3
    If typeentre=2
      Angles.f=PI.f * (Angle.f) / 200
    EndIf
    If typeentre=1
      Angles.f=PI.f * (Angle.f) / 180
    EndIf   
  EndIf 

  If typesorti=typeentre
    Angles.f=Angle.f
  EndIf
 
  ProcedureReturn Angles.f
EndProcedure


Code:
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #CheckBox_0
  #CheckBox_1
  #CheckBox_2
  #CheckBox_3
  #CheckBox_4
  #CheckBox_5
  #String_0
  #String_1
  #Frame3D_0
  #Frame3D_1
  #Button_0
EndEnumeration
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 182, 358,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Convertisseur d'angles")
    If CreateGadgetList(WindowID())
      CheckBoxGadget(#CheckBox_0, 30, 30, 90, 20, "Degré")
      CheckBoxGadget(#CheckBox_1, 30, 60, 100, 20, "Grade")
      CheckBoxGadget(#CheckBox_2, 30, 90, 90, 20, "Radian")
      CheckBoxGadget(#CheckBox_3, 30, 180, 90, 20, "Degré")
      CheckBoxGadget(#CheckBox_4, 30, 210, 100, 20, "Grade")
      CheckBoxGadget(#CheckBox_5, 30, 240, 100, 20, "Radian")
      StringGadget(#String_0, 30, 120, 100, 20, "")
      StringGadget(#String_1, 30, 270, 100, 20, "", #PB_String_ReadOnly)
      Frame3DGadget(#Frame3D_0, 20, 10, 140, 140, "Angle à convertir")
      Frame3DGadget(#Frame3D_1, 20, 160, 140, 150, "Angle converti")
      ButtonGadget(#Button_0, 20, 320, 140, 30, "Convertir")
     
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat
 
  EventID=WindowEvent()
  If EventID=#PB_Event_Gadget
    Select  EventGadgetID()
      Case #Button_0
  If GetGadgetState(#CheckBox_0)=1
    enter=1
  ElseIf GetGadgetState(#CheckBox_1)=1
    enter=2
  ElseIf GetGadgetState(#CheckBox_2)=1
    enter=3
  EndIf

  If GetGadgetState(#CheckBox_3)=1
    sortie=1
  ElseIf GetGadgetState(#CheckBox_4)=1
    sortie=2
  ElseIf GetGadgetState(#CheckBox_5)=1
    sortie=3
  EndIf
  Angle.f=ValF(GetGadgetText(#String_0))
  Angles.f=ConvertAngle(Angle,enter,sortie)
  SetGadgetText(#String_1,StrF(Angles.f))
  EndSelect
  EndIf
Until EventID=#PB_Event_CloseWindow


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mer 17/Mai/2006 19:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 23/Jan/2004 18:10
Messages: 2527
J'ai mis à jour mon post en prenant en compte les nouveautés (macros, assembleur en ligne plus clair, #PI) de la V4 ^^

Dri :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Ven 04/Aoû/2006 23:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
Coucou

Plein de choses utiles, ici, sur wikipedia :

[url]http://fr.wikipedia.org/wiki/Fonction_trigonométrique[/url]

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Sam 10/Fév/2007 17:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 23/Jan/2004 18:10
Messages: 2527
Ca fait longtemps que personne n'a rien posté alors j'ai ajouté trois fonctions de probabilités (dans mon premier post)

Dri


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 16/Sep/2007 14:58 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Allez, hop!
Je remonte ce topic. (Enfin... y a pas besoin de le remonter, puisqu'il ne descend pas, vu qu'il est en post-it. Mais bon... Je me comprend!) :roll:

J'ai commencé à faire un petit fichier de macros regroupant les différentes formules pour le calcul de périmètres, surfaces, volumes, et tout ce qui concerne la géométrie en général.

J'ai à peu près tout piqué dans l'aide, et j'ai aussi essayé d'ajouter des calculs qui découlent des "standards", comme par exemple, calculer la longueur d'un rectangle par rapport à sa surface et à sa hauteur. Enfin, bref, des choses de ce genre, quoi.

Mais bon. Comme les maths et moi, on est un peu en froid depuis quelques années, je vous met le code ici, et si vous trouvez des erreurs ou des méthodes plus simple, vous pourrez toujours les modifier.

Code:
#RadToDeg = 180.0 / #PI
#RadToGrd = 200.0 / #PI
#DegToRad = #PI / 180.0
#DegToGrd = 200 / 180.0
#GrdToRad = #PI / 200.0
#GrdToDeg = 180 / 200.0

;{- Conversions d'Angles (Macros sauvagement piquées à Dr. Dri)
;/ An   = Angle
;-
Macro DegToRad(An)                ; Degrés en Radians
  ((An) * #DegToRad)
EndMacro

Macro DegToGrd(An)                ; Degréss en Grades
  ((An) * #DegToGrd)
EndMacro

Macro RadToDeg(An)                ; Radians en Degrés
  ((An) * #RadToDeg)
EndMacro

Macro RadToGrd(An)                ; Radians en Grades
  ((An) * #RadToGrd)
EndMacro

Macro GrdToRad(An)                ; Grades en Radians
  ((An) * #GrdToRad)
EndMacro

Macro GrdToDeg(An)                ; Grades en Degrés
  ((An) * #GrdToDeg)
EndMacro
;}

;{- Carré
;/ Co   = Longueur du côté
;/ Di   = Longueur de la diagonale
;/ Su   = Surface
;/ Pe   = Périmètre
;-
Macro Peri_Carre(Co)              ; Périmètre du carré
  Co*4
EndMacro

Macro Surf_Carre(Co)              ; Surface du carré
  Co*Co
EndMacro

Macro Diag_Carre(Co)              ; Diagonale du carré
  Co*Sqr(2)
EndMacro

Macro CoteFromSurf(Su)            ; Longueur du côté par rapport à la surface
  Sqr(Su)
EndMacro

Macro CoteFromDiag(Di)            ; Longueur du côté par rapport à la diagonale
  Di/Sqr(2)
EndMacro

Macro CoteFromPeri(Pe)            ; Longueur du côté par rapport au périmètre
  Pe/4
EndMacro
;}

;{- Rectangle
;/ Lo   = Longueur
;/ La   = Largeur
;/ Hy   = Hypoténuse
;/ Su   = Surface
;/ Pe   = Périmètre
;/ Ca   = Longueur du côté adjacent à l'hypoténuse
;/ Ln   = Longueur d'un côté quelconque (sauf hypoténuse)
;-
Macro Peri_Rect(Lo, La)           ; Périmètre du rectangle
  (Lo + La) * 2
EndMacro

Macro Surf_Rect(Lo, La)           ; Surface du rectangle
  Lo * La
EndMacro

Macro Diag_Rect(Lo, La)           ; Calcul de l'hypoténuse
  Sqr(Pow(Lo, 2) + Pow(La, 2))
EndMacro

Macro Angle_Rect(Ca, Hy)          ; Calcul des angles
  ACos(Ca/Hy)/0.0174533
EndMacro

Macro L_Rect(Hy, Ln)              ; Calcul de la largeur ou de la longueur par rapport à l'hypoténuse
  Sqr(Pow(Hy, 2) - Pow(Ln, 2))
EndMacro
;}

;{- Cercle
;/ Ra   = Rayon
;/ Di   = Diamètre
;/ Su   = Surface
;/ La   = Longueur de l'arc
;-
Macro Peri_Cercle_R(Ra)           ; Périmètre du cercle par rapport au rayon
  2 * #PI * Ra
EndMacro

Macro Peri_Cercle_D(Di)           ; Périmètre du cercle par rapport au diamètre
  #PI * Di
EndMacro

Macro Surf_Cercle_R(Ra)           ; Surface du cercle par rapport au rayon
  #PI * (Pow(Ra, 2))
EndMacro

Macro Surf_Cercle_D(Di)           ; Surface du cercle par rapport au diamètre
  #PI/4 * Pow(Di, 2)
EndMacro

Macro Ra_Cercle_S(Su)             ; Rayon du cercle par rapport à sa surface
  Sqr(Su / #PI)
EndMacro

Macro Di_Cercle_S(Su)             ; Diamètre du cercle par rapport à sa surface
  Sqr(Su / (#PI/4))
EndMacro

Macro Peri_Cercle_S(Su)           ; Perimètre du cercle par rapport à sa surface
  #PI * Sqr(Su / (#PI/4))
EndMacro

Macro Lng_Arc_Cercle(Ra, An)      ; Longueur d'un arc de cercle
  #PI * Ra * (An / 180)
EndMacro

Macro Lng_Crd_Cercle(Ra, An)      ; Longueur de la corde
  2 * Ra * Sin(DegToRad(An)/2)
EndMacro

Macro Surf_Arc_Cercle(Di, An)     ; Surface d'un arc de cercle
  #PI * Pow(Di,2) * An /1440
EndMacro

Macro Surf_Arc_From_LArc(La, Ra)   ; Surface d'un arc de cercle par rapport à la longueur de l'arc
  La * Ra / 2
EndMacro
;}
 
;{- Parallelogramme
;/ Lo = Longueur
;/ Ha = Hauteur
;/ La = Largeur
;/ Su = Surface
;/ Pe = Périmètre
;-
Macro Peri_Para(Lo, La)           ; Périmètre du parallelogramme
  Lo*2 + La*2
EndMacro

Macro Surf_Para(Lo, Ha)           ; Surface du parallelogramme
  Lo * Ha
EndMacro
;}

;{- Trapeze
;/ Gb = Grande Base
;/ Pb = Petite Base
;/ Ha = Hauteur
;/ Su = Surface
;/ Pe = Périmètre
;/ C1 = Côté 1
;/ C2 = Côté 2
;-
Macro Surf_Trapeze(Gb, Pb, Ha)    ; Surface du trapèze
  ((Gb + Pb) * Ha) / 2
EndMacro

Macro Peri_Trapeze(Gb, Pb, C1, C2); Périmètre du trapèze
  Gb + Pb + C1 + C2
EndMacro
;}



;/ Tests

Debug "--- Angles ---"
Debug DegToRad(180)
Debug DegToGrd(180)
Debug RadToDeg(#PI)
Debug RadToGrd(#PI)
Debug GrdToRad(200)
Debug GrdToDeg(200)
Debug ""
Debug "--- Carré ---"
Debug Peri_Carre(10)
Debug Surf_Carre(10)
Debug Diag_Carre(10)
Debug CoteFromSurf(100)
Debug CoteFromDiag(14.1421356)
Debug CoteFromPeri(40)
Debug ""
Debug "--- Rectangle ---"
Debug Peri_Rect(30, 40)
Debug Surf_Rect(30, 40)
Debug Diag_Rect(30, 40)
Debug Angle_Rect(40, 50)
Debug L_Rect(50, 40)
Debug ""
Debug "--- Cercles ---"
Debug Peri_Cercle_R(50)
Debug Peri_Cercle_D(100)
Debug Surf_Cercle_R(50)
Debug Surf_Cercle_D(100)
Debug Ra_Cercle_S(7853.98193359375)
Debug Di_Cercle_S(7853.98193359375)
Debug Peri_Cercle_S(7853.98193359375)
Debug Lng_Arc_Cercle(50, 180)
Debug Lng_Crd_Cercle(50, 180)
Debug Surf_Arc_Cercle(100, 180)
Debug Surf_Arc_From_LArc(157.0796, 50)
Debug ""
Debug "--- Parallelogrammes ---"
Debug Peri_Para(100, 60)
Debug Surf_Para(100, 60)
Debug ""
Debug "--- Trapèze ---"
Debug Surf_Trapeze(100, 90, 80)
Debug Peri_Trapeze(100, 90, 85, 85)


Dernière édition par Chris le Dim 16/Sep/2007 17:43, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 16/Sep/2007 15:31 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14535
merci :D ; juste dommage, je deteste les macro !! :wink:
mais bon... :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 16/Sep/2007 15:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Dobro a écrit:
merci :D ; juste dommage, je deteste les macro !! :wink:
mais bon... :)


T'as essayé les sardines?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 23/Sep/2007 2:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 23/Jan/2004 18:10
Messages: 2527
@Chris
Dans tes macros mets toujours les calculs entre parenthèse. Sinon tu peux avoir de mauvaises surprises de priorité de calcul.

Code:
Macro onze()
  10 + 1
EndMacro

Debug onze()
Debug onze() * 10 ;11 * 10 = 110


Dri


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 23/Sep/2007 7:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Dr. Dri a écrit:
@Chris
Dans tes macros mets toujours les calculs entre parenthèse. Sinon tu peux avoir de mauvaises surprises de priorité de calcul.

Code:
Macro onze()
  10 + 1
EndMacro

Debug onze()
Debug onze() * 10 ;11 * 10 = 110


Dri


Ah oui! ... Effectivement 8O
Je le ferais.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mer 26/Sep/2007 0:52 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3484
C'est vrai que les macros ne sont pas encore tip top au poil nickel. Je les utilise de moins en moins, et pourtant c'est un régal si elle fonctionnait à 100%.

Le souci est dès qu'on rentre trop de calcul dans une macro, elle plante. Idem, quand une macro en utilise une autre.

J'espère que ce tir sera rectifié dans les prochaines mises à jour car un code blindé de macro, c'est du temps et de la vitesse gagnés, avec une bonne présentation de programme structuré et plus simple encore qu'une procédure puisqu'on a pas tous les types et remaniements de variables à faire comme dans une procédure. Cette dernière ne devient utile que pour la récursivité.

@chris

Merci pour ces calculs qui me font penser à un petit prog sympa de géométrie. Qui sait : ça me tentera d'en faire une ébauche...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mer 26/Sep/2007 17:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 23/Jan/2004 18:10
Messages: 2527
Ollivier a écrit:
C'est vrai que les macros ne sont pas encore tip top au poil nickel. Je les utilise de moins en moins, et pourtant c'est un régal si elle fonctionnait à 100%.

C'est le principe des macros de remplacer le code, donc si tu ne mets pas de parenthèse c'est normal d'obtenir ce résultat

Dri


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mer 26/Sep/2007 17:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
@dri: oui je pense pareil.

je suis pas sûr du tout de ce que t'avances Ollivier.

montre moi des macros qui marchent pas et on en reparle mais franchement je les utilise trèèèèès souvent et sans problème. faut juste savoir ce qu'on fait et notamment bien gérer les parenthèses quitte à en mettre trop que pas assez.

une macro N'EST PAS une procédure. trop de gens font pas la différence...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mer 26/Sep/2007 18:17 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3484
J'ai mis l'énigme de la macro capricieuse ici pour éviter de surcharger ce sujet.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Ven 20/Mar/2009 23:41 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14535
..........


Dernière édition par Backup le Dim 02/Oct/2011 13:05, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 54 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye