FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Aide de PANORAMIC
Menu - Fonctions Mathematiques Emptypar papydall Aujourd'hui à 4:21

» Je teste PANORAMIC V 1 beta 1
Menu - Fonctions Mathematiques Emptypar papydall Aujourd'hui à 4:17

» select intégrés
Menu - Fonctions Mathematiques Emptypar jjn4 Hier à 18:33

» PANORAMIC V 1
Menu - Fonctions Mathematiques Emptypar Klaus Hier à 9:53

» bouton dans autre form que 0
Menu - Fonctions Mathematiques Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Menu - Fonctions Mathematiques Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Menu - Fonctions Mathematiques Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Menu - Fonctions Mathematiques Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Menu - Fonctions Mathematiques Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Menu - Fonctions Mathematiques Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Menu - Fonctions Mathematiques Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Menu - Fonctions Mathematiques Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Menu - Fonctions Mathematiques Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Menu - Fonctions Mathematiques Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Menu - Fonctions Mathematiques Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

 

 Menu - Fonctions Mathematiques

Aller en bas 
3 participants
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Menu - Fonctions Mathematiques Empty
MessageSujet: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques EmptyDim 23 Déc 2012 - 3:39

J'ai mis à jour mon programme avec le calcul sur les fractions et le début des fonctions proposée par Nardo et Papydall.
J'ajouterais les autres fonctions un de ces jours Wink
Code:
' --------------------------------------------------------------------
' Quelques fonctions mathématiques:
'  - Liste des nombres premiers entre 2 nombres
'  - Calcul du PGCD de 2 nombres entiers
'  - Calcul du PPCM de 2 nombres entiers
'  - Calcul de la suite de Fibonacci
' --------------------------------------------------------------------
' Ecrit en Basic Panoramic 0.9.24 le 23/12/2012 par Jicehel
' avec des fonctions fournies par Papydall et Nardo26
' --------------------------------------------------------------------

' --------------------------------------------------------------------
' Initialisation
'
LABEL recommencer, quitter, verifier, annuler, Calculer2Fractions, TraiterAutreFraction
LABEL chercher, calculerPGCD, calculerPPCM, simplifierFraction, calculerFactoriel, clic_operation
LABEL calculerFibonacci
LABEL M_nbpremiers, M_PGCD, M_PPCM, M_Simplifier, M_Factoriel, M_Calculer2Fractions, M_Fibonacci
DIM F,G,I%,J,K,Temp, SMALL,LARGE,S$, PGCD%,PPCM%, operation$

' --------------------------------------------------------------------
' Interface utilisateur, demande du message à traduire
'
CAPTION  0, "FONCTIONS MATHEMATIQUES"

' Création du menu pour choisir la fonction à lancer
MAIN_MENU 10
SUB_MENU 20 : PARENT 20,10 : CAPTION 20, "Choix de la fonction à lancer"
  SUB_MENU 21 : PARENT 21,20 : CAPTION 21, "Trouver les chiffres premiers entre 2 bornes" : ON_CLICK 21,M_nbpremiers
  SUB_MENU 22 : PARENT 22,20 : CAPTION 22, "Trouver le PGCD de 2 nombres entiers" : ON_CLICK 22,M_PGCD
  SUB_MENU 23 : PARENT 23,20 : CAPTION 23, "Trouver le PPCM de 2 nombres entiers" : ON_CLICK 23,M_PPCM
  SUB_MENU 24 : PARENT 24,20 : CAPTION 24, "Calculer la suite de Fibonacci" : ON_CLICK 24,M_Fibonacci
  SUB_MENU 25 : PARENT 25,20 : CAPTION 25, "Calculer le factoriel d'un entier" : ON_CLICK 25,M_Factoriel
SUB_MENU 30 : PARENT 30,10 : CAPTION 30, "Fractions"
  SUB_MENU 31 : PARENT 31,30 : CAPTION 31, "Simplifier une fraction de 2 entiers" : ON_CLICK 31,M_Simplifier
  SUB_MENU 32 : PARENT 32,30 : CAPTION 32, "Effectuer une opération (+;-;*;/)" : ON_CLICK 32,M_Calculer2Fractions

' Création des fenêtres utilisées
FORM 100:HIDE 100 : LEFT 100,100:TOP 100,100:WIDTH 100,400:HEIGHT 100,200
COMMAND_TARGET_IS 100
ALPHA  110:LEFT 110,10 :TOP 110,10
EDIT  120:LEFT 120,10 :TOP 120,30:WIDTH 120,100
ALPHA  115:LEFT 115,10 :TOP 115,70
EDIT  125:LEFT 125,10 :TOP 125,90: WIDTH 125,100
BUTTON 130:LEFT 130,40 :TOP 130,130:CAPTION 130,"LANCER"
BUTTON 140:LEFT 140,140:TOP 140,130: WIDTH 140, 105 : CAPTION 140,"MENU PRINCIPAL": ON_CLICK 140, annuler
BUTTON 150:LEFT 150,270:TOP 150,130: CAPTION 150,"QUITTER": ON_CLICK 150, quitter

FORM 200:HIDE 200 : LEFT 200,100:TOP 200,100:WIDTH 200,400:HEIGHT 200,160
COMMAND_TARGET_IS 200
ALPHA  210:LEFT 210,10 :TOP 210,10
ALPHA  220:LEFT 220,10 :TOP 220,30: WIDTH 220,280
BUTTON 230:LEFT 230,40 :TOP 230,60: CAPTION 230,"NOUVEAU"  :ON_CLICK 230,recommencer
BUTTON 240:LEFT 240,140:TOP 240,60 : WIDTH 240, 105 :CAPTION 240,"MENU PRINCIPAL": ON_CLICK 240, annuler
BUTTON 250:LEFT 250,270:TOP 250,60: CAPTION 250,"QUITTER":ON_CLICK 250,quitter
COMMAND_TARGET_IS 100
ON_CLOSE 100, annuler : ON_CLOSE 200, recommencer

' Fin
END

M_nbpremiers:
' --------------------------------------------------------------------
' Prépare les fenêtres pour la liste des nombres premiers
'
  HIDE 0 : CAPTION 100,"Liste des nombres premiers entre 2 nombres":CAPTION 110,"Indiquez la borne inférieure de la recherche :":CAPTION 115,"Indiquez la borne supérieure de la recherche :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, chercher
  CAPTION 200,"NOMBRES PREMIERS TROUVES":CAPTION 210,"Liste des nombres premiers trouves :"
  GOSUB recommencer
RETURN

M_Fibonacci:
' ******************************************************************************
' Prépare les fenêtres pour calculer la suite de Fibonacci
'
'  Informations issues de FIBO.BAS de PAPYDALL
' ******************************************************************************
' Leonardo Fibonacci, mathématicien italien du XIII siècle a posé dans l'un de
' ses ouvrages le problème suivant :
' Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un
' mur. Combien de couples obtient-on en un an si chaque couple engendre tous les
' mois un nouveau couple à compter du troisième mois de son existence ?
' On suppose que :
' au début du premier mois, il y a juste une paire de lapereaux ;
' les lapereaux ne procréent qu'à partir du  troisième mois ;
' chaque mois, toute paire susceptible de procréer engendre effectivement une
' nouvelle paire de lapereaux ;
' la nourriture est abondante et les lapins ne meurent jamais.
' La suite de Fibonacci est donc strictement croissante.
' Les termes de cette suite sont appelés "Nombres de Fibonacci"
' ******************************************************************************

  HIDE 0 : CAPTION 100,"Calcul de la suite de Fibonacci":CAPTION 110,"Entrer la valeur N (> 1)"
  HIDE 115 : HIDE 125 : ON_CHANGE 120,verifier  :  ON_CLICK 130, calculerFibonacci
  CAPTION 200,"NOMBRES PREMIERS TROUVES":CAPTION 210,"Liste des nombres premiers trouves :"
  GOSUB recommencer
RETURN

calculerFibonacci:
' --------------------------------------------------------------------
' Lance le calcul de la suiite de Fibonacci si N > 1
'
  IF VAL(TEXT$(120)) < 2
    MESSAGE "Le nombre entré doit être supérieur à 1"
    OFF_CHANGE 120 : TEXT 120, "" : ON_CHANGE 120,verifier
  ELSE
    HIDE 100
    fibonacci(VAL(TEXT$(120)))
    CAPTION 200,"RESULTAT":CAPTION 210,"La valeur de la suite de Fibonacci pour N=" + TEXT$(120)+" est :"
    CAPTION 220, STR$(I%)
    SHOW 200
 END_IF
RETURN

' ******************************************************************************
SUB fibonacci(n)
  dim_local fib0,fib1,fib2,i
  fib0 = 0 : fib1 = 1
  FOR i = 2 TO n
      fib2 = fib1 + fib0
      fib0 = fib1 : fib1 = fib2
  NEXT i
  I%=fib2
END_SUB
' ******************************************************************************

M_PGCD:
' --------------------------------------------------------------------
' Prépare la fenêtre pour le calcul du PGCD
'
  HIDE 0 : CAPTION 100,"Calcul du PGCD (Plus Grand Commun Diviseur)"
  CAPTION 110,"Indiquez le premier nombre entier:":CAPTION 115,"Indiquez le second nombre entier :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, calculerPGCD
  GOSUB recommencer
RETURN


calculerPGCD:
' --------------------------------------------------------------------
' Lance le calcule du PGCD
'
  HIDE 100
  PGCD(VAL(TEXT$(120)),VAL(TEXT$(125)))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le PGCD de "+TEXT$(120)+" et de "+TEXT$(125)+" est :"
  CAPTION 220, STR$(PGCD%) : SHOW 200
RETURN

' --------------------------------------------------------------------
' La fonction qui effectue le calcul
'
SUB PGCD(n1%,n2%)
    dim_local n3%,n4%,n5%
    n4% = n1% : n5% = n2%
    while n2% > 0
        n3% = n1% : n1% = n2% : n2% = n3% - n1%* int(n3%/n1%)
    end_while
    PGCD% = n1%
    if PGCD% <> 0 then PPCM% = (n4%*n5%)/PGCD%
END_SUB
' ------------------------------------------------------------------------------

M_PPCM:
' --------------------------------------------------------------------
' Prépare les fenêtres pour le calcul du PPCM
'
  HIDE 0 : CAPTION 100,"Calcul du PPCM (Plus Petit Commun Multiple)"
  CAPTION 110,"Indiquez le premier nombre entier:":CAPTION 115,"Indiquez le second nombre entier :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, calculerPPCM
  GOSUB recommencer
RETURN

calculerPPCM:
' --------------------------------------------------------------------
' Lance le calcul du PPCM
'
  HIDE 100 : PGCD(VAL(TEXT$(120)),VAL(TEXT$(125)))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le PPCM de "+TEXT$(120)+" et de "+TEXT$(125)+" est :"
  CAPTION 220, STR$(PPCM%) : SHOW 200
RETURN

M_Simplifier:
' --------------------------------------------------------------------
' Prépare la fenêtre pour la simplification de la fraction
'
  HIDE 0 : CAPTION 100,"Simplification d'une fraction de 2 entiers"
  CAPTION 110,"Indiquez le numerateur (entier):":CAPTION 115,"Indiquez le dénominateur (entier) :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, simplifierFraction
  GOSUB recommencer
RETURN

simplifierFraction:
' --------------------------------------------------------------------
' Lance la simplification de l'équation
'
  IF VAL(TEXT$(125)) = 0
    MESSAGE "Le dénominateur doit être non nul"
    OFF_CHANGE 125 : TEXT 125, "" : ON_CHANGE 125,verifier
  ELSE
    HIDE 100
    J = VAL(TEXT$(120)) : K = VAL(TEXT$(125))
    CAPTION 200,"RESULTAT":CAPTION 210,"L'équation simplifié de "+TEXT$(120)
    IF J=0
      CAPTION 210, CAPTION$(210)+" divisé par un entier est :"
      CAPTION 220, "0"
    ELSE
      PGCD(J,K)
      CAPTION 210, CAPTION$(210)+" / "+TEXT$(125)+" est :"
      J = J/PGCD% : CAPTION 220, STR$(J)
      K = (K/PGCD%) : IF K > 1 THEN CAPTION 220, CAPTION$(220)+" / "+ STR$(K)
    END_IF
    SHOW 200
 END_IF
RETURN

M_Calculer2Fractions:
' --------------------------------------------------------------------
' Prépare les fenêtres pour faire une opération entre n fractions
'
  HIDE 0 : CAPTION 100,"Saisie de la première fraction"
  CAPTION 110,"Indiquez le numerateur (entier):":CAPTION 115,"Indiquez le dénominateur (entier) :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, TraiterAutreFraction
  GOSUB recommencer
RETURN

TraiterAutreFraction:
' --------------------------------------------------------------------
' Saisie de l'opération a effectuer et de la fraction à traiter
'
  IF VAL(TEXT$(125)) = 0
    MESSAGE "Le dénominateur doit être non nul"
    OFF_CHANGE 125 : TEXT 125, "" : ON_CHANGE 125,verifier
  ELSE
    HIDE 100
    F = VAL(TEXT$(120)) : G = VAL(TEXT$(125))
    IF OBJECT_EXISTS(300) = 0
      FORM 300:HIDE 300 : LEFT 300,100:TOP 300,100:WIDTH 300,400:HEIGHT 300,200 : COMMAND_TARGET_IS 300
      CAPTION 300, "SAISIE DE L'OPERATION A EFFECTUER"
      ALPHA 310 : LEFT 310,180 : TOP 310,10 : EDIT 320 : LEFT 320,180 : TOP 320,30 : WIDTH 320,100
      ALPHA 315 : LEFT 315,180 : TOP 315,70 : EDIT 325 : LEFT 325,180 : TOP 325,90 : WIDTH 325,100
      CAPTION 310,"Indiquez le numerateur (entier):":CAPTION 315,"Indiquez le dénominateur (entier) :"
      operation$ = "" : CONTAINER_OPTION 380 : LEFT 380, 10 : TOP 380, 25 : HEIGHT 380, 56 : WIDTH 380, 80
      ALPHA 382 : LEFT 382,10 : TOP 382, 10 : CAPTION 382,"Opération à effectuer"
      OPTION 383 : PARENT 383,380 : LEFT 383,7 : TOP 383, 12 : WIDTH 383, 32 : CAPTION 383, "+"  : ON_CLICK 383, clic_operation
      OPTION 384 : PARENT 384,380 : LEFT 384, 42 : TOP 384, 12 : WIDTH 384, 32 : CAPTION 384, "-" : ON_CLICK 384, clic_operation
      OPTION 385 : PARENT 385,380 : LEFT 385,7 : TOP 385, 32 : WIDTH 385, 32 : CAPTION 385, "*"  : ON_CLICK 385, clic_operation
      OPTION 386 : PARENT 386,380 : LEFT 386, 42 : TOP 386, 32 : WIDTH 386, 32 : CAPTION 386, "/" : ON_CLICK 386, clic_operation
      BUTTON 330:LEFT 330,40 :TOP 330,130:CAPTION 330,"CALCULER" : ON_CLICK 330,Calculer2Fractions
      BUTTON 340:LEFT 340,140:TOP 340,130: WIDTH 340, 105 : CAPTION 340,"MENU PRINCIPAL": ON_CLICK 340, annuler
      BUTTON 350:LEFT 350,270:TOP 350,130: CAPTION 350,"QUITTER": ON_CLICK 350, quitter
      SHOW 300
    ELSE
      operation$ = "" : MARK_OFF 383 : MARK_OFF 384 : MARK_OFF 385 : MARK_OFF 386
      OFF_CHANGE 320 : OFF_CHANGE 325 : TEXT 320, "" : TEXT 325, "": SET_FOCUS 320 : ON_CHANGE 320,verifier : ON_CHANGE 325,verifier
    END_IF
  END_IF
RETURN

clic_operation:
  IF number_click = 383 THEN operation$ = "+"
  IF number_click = 384 THEN operation$ = "-"
  IF number_click = 385 THEN operation$ = "*"
  IF number_click = 386 THEN operation$ = "/"
RETURN

Calculer2Fractions:
' --------------------------------------------------------------------
' Lance la simplification de l'équation
'
  IF (VAL(TEXT$(325)) = 0) OR (operation$ = "")
    IF VAL(TEXT$(325)) = 0 THEN MESSAGE "Le dénominateur doit être non nul" :  OFF_CHANGE 325 : TEXT 325, "" : ON_CHANGE 125,verifier
    IF operation$ = "" THEN MESSAGE "Veuillez choisir l'opération à effectuer"
  ELSE
    J = VAL(TEXT$(320)) : K = VAL(TEXT$(325))
    COMMAND_TARGET_IS 0 : DELETE 300 : CAPTION 200,"RESULTAT"
    IF operation$ = "+" THEN F=(K*F)+(J*G) : G = G*K : CAPTION 210,"Le résultat de l'addition est : "
    IF operation$ = "-" THEN F=(K*F)-(J*G) : G = G*K : CAPTION 210,"Le résultat de la soustraction est : "
    IF operation$ = "*" THEN F=F*J : G = G*K : CAPTION 210,"Le résultat de la multiplication est : "
    IF operation$ = "/" THEN F=F*K : G = G*J : CAPTION 210,"Le résultat de la division est : "
    PGCD(F,G)
    F = F/PGCD% : CAPTION 220, STR$(F)
    G = G/PGCD% : IF G > 1 THEN CAPTION 220, CAPTION$(220)+" / "+ STR$(G)
    SHOW 200
 END_IF
RETURN

M_Factoriel:
' --------------------------------------------------------------------
' Prépare les fenêtres pour le calcul du factoriel
'
  HIDE 0 : CAPTION 100,"Calcul du factoriel d'un nombre entier"
  CAPTION 110,"Indiquez l'entier dont vous vouler connaître le factoriel :":CAPTION 115,""
  ON_CHANGE 120,verifier  :  OFF_CHANGE 125 : HIDE 125 : ON_CLICK 130, calculerFactoriel
  GOSUB recommencer
RETURN

calculerFactoriel:
' --------------------------------------------------------------------
' Calculer le factoriel d'un entier
'
  HIDE 100
  J = VAL(TEXT$(120))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le résultat du factoriel de "+TEXT$(120)+"  ("+TEXT$(120)+"!) est :"
  IF J=0
    CAPTION 220,"1"
  ELSE
    I% = J -1 : K = J
    WHILE I% > 1 : K = K * I% : I% = I% - 1 : END_WHILE
    CAPTION 220, STR$(K)
  END_IF
SHOW 200
RETURN

chercher:
' --------------------------------------------------------------------
' Recherche les nombres entiers entre les 2 valeurs
'
  HIDE 100 :  SMALL = VAL(TEXT$(120)) : LARGE = VAL(TEXT$(125))
    IF LARGE < SMALL THEN TEMP = LARGE : LARGE = SMALL : SMALL = TEMP :  ' Si l'utilisateur s'est trompé
    IF LARGE < SMALL  + 1
        MESSAGE "La borne supérieure doit être plus grande que la borne inférieure"
        GOSUB recommencer
        RETURN
    END_IF
    IF LARGE > 1 AND SMALL < 3 THEN S$="      2 " : ELSE : S$=""
    IF LARGE > 2 AND SMALL < 4 THEN S$=S$+"      3 "
    SMALL=INT(SMALL/2)*2+1 : ' Prend le premier nombre impair comme borne inférieure
    LARGE=INT(LARGE/2)*2-1 : ' Et le dernier nombre impair comme borne supérieure
    IF SMALL=LARGE THEN LARGE = LARGE + 2
    FOR K=SMALL TO LARGE STEP 2
        F=0 : ' Réinitialise le compteur
        FOR J=3 TO SQR(K) STEP 2
          IF K/J-INT(K/J)=0 THEN F=F+1    : ' Compte les facteurs, donc si F=0, ce sera un nombre premier
        NEXT J
      IF F=0 AND K<> 1 THEN S$ = S$ + RIGHT$(STRING$(7," ") + STR$(K),7) +"  "  : ' Pas de diviseur trouvé, on affiche le nombre premier
    NEXT K
    CAPTION 220, S$ : SHOW 200
RETURN
' ------------------------------------------------------------------

SUB Dec2Frac(xx,nbDec)
' ------------------------------------------------------------------
' Fonction permettant de transformer un nombre réel en fraction
'
  DIM_LOCAL x,p0,p1,p2
  DIM_LOCAL z,q0,q1,q2
  IF VARIABLE("Dec2Frac$")=0 THEN DIM Dec2Frac$
  x = abs(xx)
  p0 = 0: p1 = 1
  q0 = 1: q1 = 0
  WHILE 1=1
    z = INT(x)
    p2 = z * p1 + p0
    q2 = z * q1 + q0
    IF ABS(ABS(xx)-p2 / q2) < POWER(10,0-NbDec) THEN EXIT_WHILE
    p0 = p1 : q0 = q1
    p1 = p2 : q1 = q2
    x = 1 / (x-z)
  END_WHILE
  IF xx < 0 THEN p2 = 0 - p2
  Dec2Frac$=STR$(p2)+"/"+STR$(q2)
end_sub


verifier:
' --------------------------------------------------------------------
' Limite la taille des bornes par ce que sinon il faudrait compliquer
' le programme et que ce n'est pas le but et vérifie que l'on ne saisie
' que des chiffres pour entrer la valeur d'une des 2 bornes
'
  IF OBJECT_EXISTS(320)=1
    OFF_CHANGE 320 : OFF_CHANGE 325
  ELSE
    OFF_CHANGE 120 : OFF_CHANGE 125
  END_IF
  IF NUMBER_CHANGE = 120 OR NUMBER_CHANGE = 125 OR NUMBER_CHANGE = 320 OR NUMBER_CHANGE = 325
    F=NUMBER_CHANGE
    IF LEN(TEXT$(F)) > 7
        MESSAGE "Pour des raisons pratiques, les limites doivent être inférieures à 10 000 000"
        TEXT F,LEFT$(TEXT$(F),7)
    END_IF
    FOR I% = 1 TO LEN(TEXT$(F))
        IF ASC(MID$(TEXT$(F),I%,1)) < 48 OR ASC(MID$(TEXT$(F),I%,1)) > 57
            MESSAGE "Veuillez ne saisir que des chiffres"
            TEXT F,""
            SET_FOCUS F
        END_IF
    NEXT I%
  END_IF
  IF OBJECT_EXISTS(320)=1
    ON_CHANGE 320,verifier : ON_CHANGE 325,verifier
  ELSE
    ON_CHANGE 120,verifier : ON_CHANGE 125,verifier
  END_IF
RETURN
' ------------------------------------------------------------------

annuler:
' ---------------------------------------------------------------------
' Retourner à la fenêtre du menu principal en "fermant" les autres
'
  IF OBJECT_EXISTS(300) = 1 THEN DELETE 300
  HIDE 100 : HIDE 200 : OFF_CHANGE 120 : OFF_CHANGE 125 : TEXT 120, "" : TEXT 125, "" : SHOW 0
RETURN
' --------------------------------------------------------------------

recommencer:
' ---------------------------------------------------------------------
' Réafficher la fenêtre pour saisir les bornes de la recherche
'
  HIDE 200 : OFF_CHANGE 120 : OFF_CHANGE 125 : TEXT 120, "" : TEXT 125, "": SHOW 100 : SET_FOCUS 120
  ON_CHANGE 120,verifier : ON_CHANGE 125,verifier
RETURN
' --------------------------------------------------------------------

quitter:
TERMINATE
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Menu - Fonctions Mathematiques Empty
MessageSujet: Re: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques EmptyDim 23 Déc 2012 - 7:14

Bonjour Jicehel,

J'ai apporté quelques modifications Smile
- Modification de la procédure verifier: tu ne peux pas te fier sur OBJECT_EXISTS...(si tu relances une 2eme fois un calcul, c'est foutu).
la commande NUMERIC() t'evite de faire une boucle et de vérifier les codes ASCII.
- Ajout dans TraiterAutreFraction des ON_CHANGE 320 et 325 lors de la creation de FORM 300
- Ajout dans le menu de Dec2Frac Wink

Code:

' --------------------------------------------------------------------
' Quelques fonctions mathématiques:
'  - Liste des nombres premiers entre 2 nombres
'  - Calcul du PGCD de 2 nombres entiers
'  - Calcul du PPCM de 2 nombres entiers
'  - Calcul de la suite de Fibonacci
' --------------------------------------------------------------------
' Ecrit en Basic Panoramic 0.9.24 le 23/12/2012 par Jicehel
' avec des fonctions fournies par Papydall et Nardo26
' --------------------------------------------------------------------

' --------------------------------------------------------------------
' Initialisation
'
LABEL recommencer, quitter, verifier, annuler, Calculer2Fractions, TraiterAutreFraction
LABEL chercher, calculerPGCD, calculerPPCM, simplifierFraction, calculerFactoriel, clic_operation
LABEL calculerFibonacci
LABEL M_nbpremiers, M_PGCD, M_PPCM, M_Simplifier, M_Factoriel, M_Calculer2Fractions, M_Fibonacci
LABEL M_DetermineFraction
DIM F,G,I%,J,K,Temp, SMALL,LARGE,S$, PGCD%,PPCM%, operation$

' --------------------------------------------------------------------
' Interface utilisateur, demande du message à traduire
'
CAPTION  0, "FONCTIONS MATHEMATIQUES"

' Création du menu pour choisir la fonction à lancer
MAIN_MENU 10
SUB_MENU 20 : PARENT 20,10 : CAPTION 20, "Choix de la fonction à lancer"
  SUB_MENU 21 : PARENT 21,20 : CAPTION 21, "Trouver les chiffres premiers entre 2 bornes" : ON_CLICK 21,M_nbpremiers
  SUB_MENU 22 : PARENT 22,20 : CAPTION 22, "Trouver le PGCD de 2 nombres entiers" : ON_CLICK 22,M_PGCD
  SUB_MENU 23 : PARENT 23,20 : CAPTION 23, "Trouver le PPCM de 2 nombres entiers" : ON_CLICK 23,M_PPCM
  SUB_MENU 24 : PARENT 24,20 : CAPTION 24, "Calculer la suite de Fibonacci" : ON_CLICK 24,M_Fibonacci
  SUB_MENU 25 : PARENT 25,20 : CAPTION 25, "Calculer le factoriel d'un entier" : ON_CLICK 25,M_Factoriel
SUB_MENU 30 : PARENT 30,10 : CAPTION 30, "Fractions"
  SUB_MENU 31 : PARENT 31,30 : CAPTION 31, "Simplifier une fraction de 2 entiers" : ON_CLICK 31,M_Simplifier
  SUB_MENU 32 : PARENT 32,30 : CAPTION 32, "Effectuer une opération (+;-;*;/)" : ON_CLICK 32,M_Calculer2Fractions
  SUB_MENU 33 : PARENT 33,30 : CAPTION 33, "Trouver une fraction à partir d'un reel" : ON_CLICK 33,M_DetermineFraction

' Création des fenêtres utilisées
FORM 100:HIDE 100 : LEFT 100,100:TOP 100,100:WIDTH 100,400:HEIGHT 100,200
COMMAND_TARGET_IS 100
ALPHA  110:LEFT 110,10 :TOP 110,10
EDIT  120:LEFT 120,10 :TOP 120,30:WIDTH 120,100
ALPHA  115:LEFT 115,10 :TOP 115,70
EDIT  125:LEFT 125,10 :TOP 125,90: WIDTH 125,100
BUTTON 130:LEFT 130,40 :TOP 130,130:CAPTION 130,"LANCER"
BUTTON 140:LEFT 140,140:TOP 140,130: WIDTH 140, 105 : CAPTION 140,"MENU PRINCIPAL": ON_CLICK 140, annuler
BUTTON 150:LEFT 150,270:TOP 150,130: CAPTION 150,"QUITTER": ON_CLICK 150, quitter

FORM 200:HIDE 200 : LEFT 200,100:TOP 200,100:WIDTH 200,400:HEIGHT 200,160
COMMAND_TARGET_IS 200
ALPHA  210:LEFT 210,10 :TOP 210,10
ALPHA  220:LEFT 220,10 :TOP 220,30: WIDTH 220,280
BUTTON 230:LEFT 230,40 :TOP 230,60: CAPTION 230,"NOUVEAU"  :ON_CLICK 230,recommencer
BUTTON 240:LEFT 240,140:TOP 240,60 : WIDTH 240, 105 :CAPTION 240,"MENU PRINCIPAL": ON_CLICK 240, annuler
BUTTON 250:LEFT 250,270:TOP 250,60: CAPTION 250,"QUITTER":ON_CLICK 250,quitter
COMMAND_TARGET_IS 100
ON_CLOSE 100, annuler : ON_CLOSE 200, recommencer

' Fin
END

M_nbpremiers:
' --------------------------------------------------------------------
' Prépare les fenêtres pour la liste des nombres premiers
'
  HIDE 0 : CAPTION 100,"Liste des nombres premiers entre 2 nombres":CAPTION 110,"Indiquez la borne inférieure de la recherche :":CAPTION 115,"Indiquez la borne supérieure de la recherche :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, chercher
  CAPTION 200,"NOMBRES PREMIERS TROUVES":CAPTION 210,"Liste des nombres premiers trouves :"
  GOSUB recommencer
RETURN

M_Fibonacci:
' ******************************************************************************
' Prépare les fenêtres pour calculer la suite de Fibonacci
'
'  Informations issues de FIBO.BAS de PAPYDALL
' ******************************************************************************
' Leonardo Fibonacci, mathématicien italien du XIII siècle a posé dans l'un de
' ses ouvrages le problème suivant :
' Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un
' mur. Combien de couples obtient-on en un an si chaque couple engendre tous les
' mois un nouveau couple à compter du troisième mois de son existence ?
' On suppose que :
' au début du premier mois, il y a juste une paire de lapereaux ;
' les lapereaux ne procréent qu'à partir du  troisième mois ;
' chaque mois, toute paire susceptible de procréer engendre effectivement une
' nouvelle paire de lapereaux ;
' la nourriture est abondante et les lapins ne meurent jamais.
' La suite de Fibonacci est donc strictement croissante.
' Les termes de cette suite sont appelés "Nombres de Fibonacci"
' ******************************************************************************

  HIDE 0 : CAPTION 100,"Calcul de la suite de Fibonacci":CAPTION 110,"Entrer la valeur N (> 1)"
  HIDE 115 : HIDE 125 : ON_CHANGE 120,verifier  :  ON_CLICK 130, calculerFibonacci
  CAPTION 200,"NOMBRES PREMIERS TROUVES":CAPTION 210,"Liste des nombres premiers trouves :"
  GOSUB recommencer
RETURN

calculerFibonacci:
' --------------------------------------------------------------------
' Lance le calcul de la suiite de Fibonacci si N > 1
'
  IF VAL(TEXT$(120)) < 2
    MESSAGE "Le nombre entré doit être supérieur à 1"
    OFF_CHANGE 120 : TEXT 120, "" : ON_CHANGE 120,verifier
  ELSE
    HIDE 100
    fibonacci(VAL(TEXT$(120)))
    CAPTION 200,"RESULTAT":CAPTION 210,"La valeur de la suite de Fibonacci pour N=" + TEXT$(120)+" est :"
    CAPTION 220, STR$(I%)
    SHOW 200
 END_IF
RETURN

' ******************************************************************************
SUB fibonacci(n)
  dim_local fib0,fib1,fib2,i
  fib0 = 0 : fib1 = 1
  FOR i = 2 TO n
      fib2 = fib1 + fib0
      fib0 = fib1 : fib1 = fib2
  NEXT i
  I%=fib2
END_SUB
' ******************************************************************************

M_PGCD:
' --------------------------------------------------------------------
' Prépare la fenêtre pour le calcul du PGCD
'
  HIDE 0 : CAPTION 100,"Calcul du PGCD (Plus Grand Commun Diviseur)"
  CAPTION 110,"Indiquez le premier nombre entier:":CAPTION 115,"Indiquez le second nombre entier :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, calculerPGCD
  GOSUB recommencer
RETURN


calculerPGCD:
' --------------------------------------------------------------------
' Lance le calcule du PGCD
'
  HIDE 100
  PGCD(VAL(TEXT$(120)),VAL(TEXT$(125)))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le PGCD de "+TEXT$(120)+" et de "+TEXT$(125)+" est :"
  CAPTION 220, STR$(PGCD%) : SHOW 200
RETURN

' --------------------------------------------------------------------
' La fonction qui effectue le calcul
'
SUB PGCD(n1%,n2%)
    dim_local n3%,n4%,n5%
    n4% = n1% : n5% = n2%
    while n2% > 0
        n3% = n1% : n1% = n2% : n2% = n3% - n1%* int(n3%/n1%)
    end_while
    PGCD% = n1%
    if PGCD% <> 0 then PPCM% = (n4%*n5%)/PGCD%
END_SUB
' ------------------------------------------------------------------------------

M_PPCM:
' --------------------------------------------------------------------
' Prépare les fenêtres pour le calcul du PPCM
'
  HIDE 0 : CAPTION 100,"Calcul du PPCM (Plus Petit Commun Multiple)"
  CAPTION 110,"Indiquez le premier nombre entier:":CAPTION 115,"Indiquez le second nombre entier :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, calculerPPCM
  GOSUB recommencer
RETURN

calculerPPCM:
' --------------------------------------------------------------------
' Lance le calcul du PPCM
'
  HIDE 100 : PGCD(VAL(TEXT$(120)),VAL(TEXT$(125)))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le PPCM de "+TEXT$(120)+" et de "+TEXT$(125)+" est :"
  CAPTION 220, STR$(PPCM%) : SHOW 200
RETURN

M_Simplifier:
' --------------------------------------------------------------------
' Prépare la fenêtre pour la simplification de la fraction
'
  HIDE 0 : CAPTION 100,"Simplification d'une fraction de 2 entiers"
  CAPTION 110,"Indiquez le numerateur (entier):":CAPTION 115,"Indiquez le dénominateur (entier) :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, simplifierFraction
  GOSUB recommencer
RETURN

simplifierFraction:
' --------------------------------------------------------------------
' Lance la simplification de l'équation
'
  IF VAL(TEXT$(125)) = 0
    MESSAGE "Le dénominateur doit être non nul"
    OFF_CHANGE 125 : TEXT 125, "" : ON_CHANGE 125,verifier
  ELSE
    HIDE 100
    J = VAL(TEXT$(120)) : K = VAL(TEXT$(125))
    CAPTION 200,"RESULTAT":CAPTION 210,"L'équation simplifié de "+TEXT$(120)
    IF J=0
      CAPTION 210, CAPTION$(210)+" divisé par un entier est :"
      CAPTION 220, "0"
    ELSE
      PGCD(J,K)
      CAPTION 210, CAPTION$(210)+" / "+TEXT$(125)+" est :"
      J = J/PGCD% : CAPTION 220, STR$(J)
      K = (K/PGCD%) : IF K > 1 THEN CAPTION 220, CAPTION$(220)+" / "+ STR$(K)
    END_IF
    SHOW 200
 END_IF
RETURN

M_Calculer2Fractions:
' --------------------------------------------------------------------
' Prépare les fenêtres pour faire une opération entre n fractions
'
  HIDE 0 : CAPTION 100,"Saisie de la première fraction"
  CAPTION 110,"Indiquez le numerateur (entier):":CAPTION 115,"Indiquez le dénominateur (entier) :"
  ON_CHANGE 120,verifier  :  ON_CHANGE 125,verifier : ON_CLICK 130, TraiterAutreFraction
  GOSUB recommencer
RETURN

TraiterAutreFraction:
' --------------------------------------------------------------------
' Saisie de l'opération a effectuer et de la fraction à traiter
'
  IF VAL(TEXT$(125)) = 0
    MESSAGE "Le dénominateur doit être non nul"
    OFF_CHANGE 125 : TEXT 125, "" : ON_CHANGE 125,verifier
  ELSE
    HIDE 100
    F = VAL(TEXT$(120)) : G = VAL(TEXT$(125))
    IF OBJECT_EXISTS(300) = 0
      FORM 300:HIDE 300 : LEFT 300,100:TOP 300,100:WIDTH 300,400:HEIGHT 300,200 : COMMAND_TARGET_IS 300
      CAPTION 300, "SAISIE DE L'OPERATION A EFFECTUER"
      ALPHA 310 : LEFT 310,180 : TOP 310,10 : EDIT 320 : LEFT 320,180 : TOP 320,30 : WIDTH 320,100
      ALPHA 315 : LEFT 315,180 : TOP 315,70 : EDIT 325 : LEFT 325,180 : TOP 325,90 : WIDTH 325,100
      ON_CHANGE 320,verifier : ON_CHANGE 325,verifier
      CAPTION 310,"Indiquez le numerateur (entier):":CAPTION 315,"Indiquez le dénominateur (entier) :"
      operation$ = "" : CONTAINER_OPTION 380 : LEFT 380, 10 : TOP 380, 25 : HEIGHT 380, 56 : WIDTH 380, 80
      ALPHA 382 : LEFT 382,10 : TOP 382, 10 : CAPTION 382,"Opération à effectuer"
      OPTION 383 : PARENT 383,380 : LEFT 383,7 : TOP 383, 12 : WIDTH 383, 32 : CAPTION 383, "+"  : ON_CLICK 383, clic_operation
      OPTION 384 : PARENT 384,380 : LEFT 384, 42 : TOP 384, 12 : WIDTH 384, 32 : CAPTION 384, "-" : ON_CLICK 384, clic_operation
      OPTION 385 : PARENT 385,380 : LEFT 385,7 : TOP 385, 32 : WIDTH 385, 32 : CAPTION 385, "*"  : ON_CLICK 385, clic_operation
      OPTION 386 : PARENT 386,380 : LEFT 386, 42 : TOP 386, 32 : WIDTH 386, 32 : CAPTION 386, "/" : ON_CLICK 386, clic_operation
      BUTTON 330:LEFT 330,40 :TOP 330,130:CAPTION 330,"CALCULER" : ON_CLICK 330,Calculer2Fractions
      BUTTON 340:LEFT 340,140:TOP 340,130: WIDTH 340, 105 : CAPTION 340,"MENU PRINCIPAL": ON_CLICK 340, annuler
      BUTTON 350:LEFT 350,270:TOP 350,130: CAPTION 350,"QUITTER": ON_CLICK 350, quitter
      SHOW 300
    ELSE
      operation$ = "" : MARK_OFF 383 : MARK_OFF 384 : MARK_OFF 385 : MARK_OFF 386
      OFF_CHANGE 320 : OFF_CHANGE 325 : TEXT 320, "" : TEXT 325, "": SET_FOCUS 320 : ON_CHANGE 320,verifier : ON_CHANGE 325,verifier
    END_IF
  END_IF
RETURN

clic_operation:
  IF number_click = 383 THEN operation$ = "+"
  IF number_click = 384 THEN operation$ = "-"
  IF number_click = 385 THEN operation$ = "*"
  IF number_click = 386 THEN operation$ = "/"
RETURN

Calculer2Fractions:
' --------------------------------------------------------------------
' Lance la simplification de l'équation
'
  IF (VAL(TEXT$(325)) = 0) OR (operation$ = "")
    IF VAL(TEXT$(325)) = 0 THEN MESSAGE "Le dénominateur doit être non nul" :  OFF_CHANGE 325 : TEXT 325, "" : ON_CHANGE 125,verifier
    IF operation$ = "" THEN MESSAGE "Veuillez choisir l'opération à effectuer"
  ELSE
    J = VAL(TEXT$(320)) : K = VAL(TEXT$(325))
    COMMAND_TARGET_IS 0 : DELETE 300 : CAPTION 200,"RESULTAT"
    IF operation$ = "+" THEN F=(K*F)+(J*G) : G = G*K : CAPTION 210,"Le résultat de l'addition est : "
    IF operation$ = "-" THEN F=(K*F)-(J*G) : G = G*K : CAPTION 210,"Le résultat de la soustraction est : "
    IF operation$ = "*" THEN F=F*J : G = G*K : CAPTION 210,"Le résultat de la multiplication est : "
    IF operation$ = "/" THEN F=F*K : G = G*J : CAPTION 210,"Le résultat de la division est : "
    PGCD(F,G)
    F = F/PGCD% : CAPTION 220, STR$(F)
    G = G/PGCD% : IF G > 1 THEN CAPTION 220, CAPTION$(220)+" / "+ STR$(G)
    SHOW 200
 END_IF
RETURN

M_Factoriel:
' --------------------------------------------------------------------
' Prépare les fenêtres pour le calcul du factoriel
'
  HIDE 0 : CAPTION 100,"Calcul du factoriel d'un nombre entier"
  CAPTION 110,"Indiquez l'entier dont vous vouler connaître le factoriel :":CAPTION 115,""
  ON_CHANGE 120,verifier  :  OFF_CHANGE 125 : HIDE 125 : ON_CLICK 130, calculerFactoriel
  GOSUB recommencer
RETURN

calculerFactoriel:
' --------------------------------------------------------------------
' Calculer le factoriel d'un entier
'
  HIDE 100
  J = VAL(TEXT$(120))
  CAPTION 200,"RESULTAT":CAPTION 210,"Le résultat du factoriel de "+TEXT$(120)+"  ("+TEXT$(120)+"!) est :"
  IF J=0
    CAPTION 220,"1"
  ELSE
    I% = J -1 : K = J
    WHILE I% > 1 : K = K * I% : I% = I% - 1 : END_WHILE
    CAPTION 220, STR$(K)
  END_IF
SHOW 200
RETURN

chercher:
' --------------------------------------------------------------------
' Recherche les nombres entiers entre les 2 valeurs
'
  HIDE 100 :  SMALL = VAL(TEXT$(120)) : LARGE = VAL(TEXT$(125))
    IF LARGE < SMALL THEN TEMP = LARGE : LARGE = SMALL : SMALL = TEMP :  ' Si l'utilisateur s'est trompé
    IF LARGE < SMALL  + 1
        MESSAGE "La borne supérieure doit être plus grande que la borne inférieure"
        GOSUB recommencer
        RETURN
    END_IF
    IF LARGE > 1 AND SMALL < 3 THEN S$="      2 " : ELSE : S$=""
    IF LARGE > 2 AND SMALL < 4 THEN S$=S$+"      3 "
    SMALL=INT(SMALL/2)*2+1 : ' Prend le premier nombre impair comme borne inférieure
    LARGE=INT(LARGE/2)*2-1 : ' Et le dernier nombre impair comme borne supérieure
    IF SMALL=LARGE THEN LARGE = LARGE + 2
    FOR K=SMALL TO LARGE STEP 2
        F=0 : ' Réinitialise le compteur
        FOR J=3 TO SQR(K) STEP 2
          IF K/J-INT(K/J)=0 THEN F=F+1    : ' Compte les facteurs, donc si F=0, ce sera un nombre premier
        NEXT J
      IF F=0 AND K<> 1 THEN S$ = S$ + RIGHT$(STRING$(7," ") + STR$(K),7) +"  "  : ' Pas de diviseur trouvé, on affiche le nombre premier
    NEXT K
    CAPTION 220, S$ : SHOW 200
RETURN

' ------------------------------------------------------------------
' Conversion d'une valeur décimale en fraction
'
M_DetermineFraction:
  DIM DetermineFraction$
  DIM DetermineFraction_i%
  REPEAT
    DetermineFraction$=MESSAGE_INPUT$("Trouver une fraction (approximation)","Nombre à virgule:","")
    IF DetermineFraction$<>""
      IF NUMERIC(DetermineFraction$)=0 THEN MESSAGE "Veuillez entrer un nombre à virgule svp"
    END_IF
  UNTIL NUMERIC(DetermineFraction$)=1 OR DetermineFraction$=""
  IF DetermineFraction$<>""
    DetermineFraction_i%= INSTR(DetermineFraction$,".")
    IF DetermineFraction_i% <> 0 THEN DetermineFraction_i% = LEN(DetermineFraction$)-DetermineFraction_i%
    Dec2Frac(VAL(DetermineFraction$),DetermineFraction_i%+1)
    DetermineFraction_i%=MESSAGE_INFORMATION_OK(DetermineFraction$+" = "+ Dec2Frac$)
  END_IF
  FREE DetermineFraction_i%:FREE DetermineFraction$
RETURN

SUB Dec2Frac(xx,nbDec)
' ------------------------------------------------------------------
' Fonction permettant de transformer un nombre réel en fraction
'
  DIM_LOCAL x,p0,p1,p2
  DIM_LOCAL z,q0,q1,q2
  IF VARIABLE("Dec2Frac$")=0 THEN DIM Dec2Frac$
  x = abs(xx)
  p0 = 0: p1 = 1
  q0 = 1: q1 = 0
  WHILE 1=1
    z = INT(x)
    p2 = z * p1 + p0
    q2 = z * q1 + q0
    IF ABS(ABS(xx)-p2 / q2) < POWER(10,0-NbDec) THEN EXIT_WHILE
    p0 = p1 : q0 = q1
    p1 = p2 : q1 = q2
    x = 1 / (x-z)
  END_WHILE
  IF xx < 0 THEN p2 = 0 - p2
  Dec2Frac$=STR$(p2)+"/"+STR$(q2)
end_sub

' --------------------------------------------------------------------
' Limite la taille des bornes par ce que sinon il faudrait compliquer
' le programme et que ce n'est pas le but et vérifie que l'on ne saisie
' que des chiffres pour entrer la valeur d'une des 2 bornes
'
verifier:
  OFF_CHANGE NUMBER_CHANGE
  IF NUMERIC(TEXT$(NUMBER_CHANGE))=0
    MESSAGE "Veuillez ne saisir que des chiffres"
    TEXT NUMBER_CHANGE,"" : SET_FOCUS NUMBER_CHANGE
  ELSE
    IF LEN(TEXT$(NUMBER_CHANGE))>7
      MESSAGE "Pour des raisons pratiques, les limites doivent être inférieures à 10 000 000"
      TEXT NUMBER_CHANGE,"" : SET_FOCUS NUMBER_CHANGE
    END_IF
  END_IF
  ON_CHANGE NUMBER_CHANGE,verifier
RETURN

' ------------------------------------------------------------------

annuler:
' ---------------------------------------------------------------------
' Retourner à la fenêtre du menu principal en "fermant" les autres
'
  IF OBJECT_EXISTS(300) = 1 THEN DELETE 300
  HIDE 100 : HIDE 200 : OFF_CHANGE 120 : OFF_CHANGE 125 : TEXT 120, "" : TEXT 125, "" : SHOW 0
RETURN
' --------------------------------------------------------------------

recommencer:
' ---------------------------------------------------------------------
' Réafficher la fenêtre pour saisir les bornes de la recherche
'
  HIDE 200 : OFF_CHANGE 120 : OFF_CHANGE 125 : TEXT 120, "" : TEXT 125, "": SHOW 100 : SET_FOCUS 120
  ON_CHANGE 120,verifier : ON_CHANGE 125,verifier
RETURN
' --------------------------------------------------------------------

quitter:
TERMINATE
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Menu - Fonctions Mathematiques Empty
MessageSujet: Re: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques EmptyDim 23 Déc 2012 - 9:59

Merci Nardo Smile
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Menu - Fonctions Mathematiques Empty
MessageSujet: Re: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques EmptyDim 23 Déc 2012 - 11:59

Bonjour tout le monde.

@Jicehel
@Nardo26

REMARQUE IMPORTANTE :

** Pour le calcul de la suite de Fibonacci, il s’agit d’une suite donc comportant une série de nombres.
Or vous affichez seulement le dernier terme ce qui veut dire seulement que le terme affiché est Fn et la non la suite complète.
Donc pour être dans les règles de l’art, il faut afficher toute la série.

** Dans mon code, j’ai utilisé une variable réelle i pour le calcul de la série, bien que tous les termes de la série soient des entiers.
Ceci parce les valeurs de la suite croient très vite et pour une variable entière i%, il y aura dépassement de capacité d’où des valeurs aberrantes !
Essayez de calculer Fibonacci(50) ; vous obtiendrez la valeur incorrecte de -298632863 au lieu de la bonne valeur 12586269025.
Donc utilisez comme variable i et non i%

EDIT :
Je prépare aussi un code pour les statistiques.
A suivre ....!

Ma grande petite-fille âgée de 45 mois s’est approprié mon ordinateur et m’empêche d’y toucher.
Alors
A+ !

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Menu - Fonctions Mathematiques Empty
MessageSujet: Re: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques EmptyDim 23 Déc 2012 - 12:12

Tu as raison Papydall, bien vu, ce sera corrigé dans la prochaine version bientôt.
Pour le moment en route pour Rennes, je prends l'ordi mais bon, je ne sais pas si je programmerais.
Revenir en haut Aller en bas
Contenu sponsorisé





Menu - Fonctions Mathematiques Empty
MessageSujet: Re: Menu - Fonctions Mathematiques   Menu - Fonctions Mathematiques Empty

Revenir en haut Aller en bas
 
Menu - Fonctions Mathematiques
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Menu personalisé avec icones et menu contextuel
» Sub-menu is not menu avec Panoramic.exe
» Mathématiques bovines
» Bases mathématiques du graphisme à 3 dimensions
» Jeux et Mathématiques

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: