Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Comment faire un calcul à partir d'une chaîne de caractères
#1
Bonjour,

J'ai deux champs de saisie, dans l'un je souhaite entrer une valeur qui sera "x" et dans l'autre je souhaite taper une fonction en toute lettre (ex : 5*x).
J'aimerai ensuite obtenir le résultat du calcul mais actuellement il voit ma fonction comme une chaîne de caractères...

Comment faire ?

Merci
Répondre
#2
Voila une solution.... avec un champ de saisie texte.
Tapez sur le pavé numérique pour saisir les opérations à faire sur une seule ligne, puis confirmez par Entrée.
Le caratère division "/" est automatiquement remplacé par un ":" (double point) dans la chîne.

Chaîne saisie : 12*2+100:2 [Entrée]

Résultat affiché: 12*2+100:2=62.00


Code :
// Sortie de SAI_Saisie1....
sChaineSaisie est un chaîne = SAI_Saisie1
nTaille est un entier = Taille(sChaineSaisie)
sNombre est une chaîne
sOpérateur est une chaîne
rTotal est un réel
POUR i = 1 _A_ nTaille
    // Opérateur existant ou en fin de saisie
    SI sChaineSaisie[[i]] DANS ("+","-","*",":") _OU_ i=nTaille ALORS
        //C'est pas un opérateur alors c'est le premier nombre
        SI sOpérateur="" ALORS
            rTotal = Val(sNombre)
        SINON
            // On ajoute le dernier caractère à la saisie
            SI i=nTaille ALORS sNombre += sChaineSaisie[[i]]
            // Opération en exécution
            SELON sOpérateur
                CAS "+" : rTotal = rTotal + Val(sNombre); sNombre = ""
                CAS "-" : rTotal = rTotal - Val(sNombre); sNombre = ""
                CAS "*" : rTotal = rTotal * Val(sNombre); sNombre = ""
                CAS ":" : rTotal = rTotal / Val(sNombre); sNombre = ""
            FIN
        FIN
        // Opérateur suivant à exécuter
        sOpérateur = sChaineSaisie[[i]]
        sNombre = ""
    SINON
        // On complète le nombre en cours
        sNombre += sChaineSaisie[[i]]
    FIN
FIN
// On affiche le résultat
SAI_Saisie1 = SAI_Saisie1 + "="+NumériqueVersChaîne(rTotal,"0,2f")

Code :
// A chaque modification de SAI_Saisie1
// On remplace la barre oblique division par un bouble point
SI Droite(SAI_Saisie1,1) = "/" ALORS
    SAI_Saisie1 = Remplace(SAI_Saisie1,"/",":")
    SAI_Saisie1..Curseur = Taille(SAI_Saisie1) + 1
FIN
Se souvenir et savoir sont deux choses différentes. Se souvenir, c'est garder en mémoire. En revanche, savoir signifie assimiler sans dépendre d'un modèle.

WD 4.1 => 23


Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Comment faire ??? gino 7 924 05-12-2019, 12:29 AM
Dernier message: jeandu69
  comment faire un tableau croisé kamdem 3 2,749 28-04-2015, 01:16 PM
Dernier message: kamdem
  Split chaîne apedemak 9 1,629 29-04-2014, 02:06 AM
Dernier message: Jurassic Pork
  tableversxml et caractère fin de ligne jeandu69 0 1,194 28-04-2014, 03:34 PM
Dernier message: jeandu69
  WD 16 : Tester le caractère " Daniel-Québec 2 1,073 15-11-2013, 01:41 PM
Dernier message: Daniel-Québec
  TableActiveFiltre et caractères spéciaux windivelop 6 1,872 21-06-2013, 08:33 PM
Dernier message: windivelop
  Caractère spéciaux dans états marinjack 9 3,144 07-05-2013, 04:39 PM
Dernier message: marinjack
  Espacement des caractères dans un libellé DanielB 3 1,673 04-06-2012, 09:45 AM
Dernier message: Samifred
  point d’arrêt ou caractère 0xCC darkWD 10 1,594 17-03-2012, 10:29 PM
Dernier message: emidev
  comment faire une mise à jour ? Djolibakandja 2 882 23-02-2012, 04:39 PM
Dernier message: Djolibakandja

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)