π
<-
Chat plein-écran
[^]

problème avec un petit signe

Pour TI-Nspire OS 3.0 ou ultérieur.

problème avec un petit signe

Message non lude Hamza.S » 14 Juil 2015, 00:03

bonjour,

après plusieurs tentatives qui se sont soldées par un échec je m'avoue vaincu mon code n'accepte pas le moins de cette touche :nssg: . le programme considère que si je n'ai rien saisi quand j'utilises la touche . je sais que le problème vient des tonumber( j'ai essayé avec math.eval( ça pose un autre souci j'ai ce message :
attempt to perform arithmetic on local 'dr1' (a nil value)


voici le code : pas de commentaire sur mon code bizarre :D
Code: Tout sélectionner
function on.construction()
    TB = D2Editor.newRichText()
    TB:setFontSize(8)   TB:setReadOnly(true)    TB:resize(199,110)   TB:move(120,0) TB:setBorderColor(500)  TB:setBorder(1)
    TB1 = D2Editor.newRichText()
    TB1:setFontSize(8)   TB1:setReadOnly(true)    TB1:resize(320,60)   TB1:move(0,160)
   editor = D2Editor.newRichText()    editor:createMathBox()        editor:resize(40,25)      editor:move(40,2)
    editor1 = D2Editor.newRichText()   editor1:createMathBox()       editor1:resize(40,25)     editor1:move(40,28)
    editor2 = D2Editor.newRichText()   editor2:createMathBox()       editor2:resize(100,30)     editor2:move(0,75)
    editor:registerFilter({tabKey = function() editor1:setFocus() end, enterKey = function() editor1:setFocus() end})
    editor1:registerFilter({tabKey = function() editor2:setFocus() end, enterKey = function() editor2:setFocus() end})
    editor2:registerFilter({tabKey = function() editor:setFocus() end , enterKey = function() traitement() end})
end

function on.getFocus()
    editor:setFocus()
end

function on.paint(gc)
    gc:setFont("sansserif","b",9)
    gc:drawString("θ (°C) : ",1,2)
    gc:drawString("Φ (%) : ",1,27)
    gc:drawString("r (kge/kgas) : ",1,55)   
    gc:setColorRGB(255, 5, 8)
    gc:setFont("sansserif","b",9)
    gc:drawString("programme : psychro " , 90,130)
    TB1:setExpression("\\chem { le programme donne les données du diagramme psychrometrie } \\chem { entrez 2 des 3 paramètres demandés}")
end

function traitement()
local e,f,g,d,ta,fi,t,ps,h,v,dr,dr1,dr2
    e = editor:getExpression()
    f = editor1:getExpression()
    g = editor2:getExpression()
    ta = string.gsub(string.gsub(e,"\\0el {",""),"}","")  ta = tonumber(ta) 
    fi = string.gsub(string.gsub(f,"\\0el {",""),"}","")  fi = tonumber(fi)
    dr = string.gsub(string.gsub(g,"\\0el {",""),"}","")  dr = tonumber(dr)     
    if ta == nil then
    for i= -10, 40,0.01 do
    t = i+273.15
    dr2 = math.floor(dr*10^6)/10^6
    dr1 = ((2.2417189023644*10^(19)*fi)/(math.exp(((6864.273257562)/(t)))*t^(5.2790907450839)-3.6040496822578*10^(19)*fi))
    dr1 = math.floor(dr1*10^6)/10^6
    if dr1 >= dr2 and i >= -10 then  ta = i   break  end
    end
    end
    t= ta+273.15
    ps = ((3.6509023281268*10^(26)*math.exp(((-6864.273257562)/(t)))*(((1)/(t)))^(0.2790907450839))/(t^(5)))
    if fi == nil then fi=((100*((dr)/(dr+((18)/(29))))*1.013*10^(5))/(ps)) end
    if dr == nil then dr = ((2.2417189023644*10^(19)*fi)/(math.exp(((6864.273257562)/(t)))*t^(5.2790907450839)-3.6040496822578*10^(19)*fi)) end
    h = 1.006*ta+dr*(1.84*ta+2501.6)
    v = ((8.3145*t)/(1.013*10^(5)))*(((1)/(18))*dr+((1)/(29)))*10^(3)
    r = " \\chem {θ = "..ta.." °C}       \\chem {Φ = "..fi.." %}              \\chem { h = "..h.." kJ/kgas}      \\chem { r = "..dr.." kge/kgas}        \\chem {v = "..v.." m^3/kg}"
    TB:setExpression(r)
end

on m'avait proposé ça :
Code: Tout sélectionner
function convertFromTI(str)
    return str:gsub(string.uchar(0xF000), "e"):gsub("−","-")
end

j'au pas trop compris comment ça marchait

j'ai l'habitude d'appuyer sur :nssg: auriez-vous une solution? merci d'avance
Image
Avatar de l’utilisateur
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 28.5%
 
Messages: 4461
Images: 18
Inscription: 07 Nov 2014, 00:43
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: problème avec un petit signe

Message non lude Levak » 14 Juil 2015, 00:35

Le - et le − sont différents symboles. En l'occurence tonumber() qui provient de Lua ne sait pas quoi faire de − qui vient de l'évaluateur d'expression de TI.

Donc le gsub va juste te remplacer les − par des - pour que Lua soit content.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)

Re: problème avec un petit signe

Message non lude Adriweb » 14 Juil 2015, 00:41

Et donc tu as juste a appeler ma fonction convertFromTI avec le string contenant le "−" de TI pour qu'elle te retourne la même string avec un "-" à la place.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: problème avec un petit signe

Message non lude Hamza.S » 14 Juil 2015, 09:49

merci Adriweb & Levak
j'ai compris vos explications et pour la solution je l'ai trouvé dans ce code :
Code: Tout sélectionner
local mx = tostring(x):gsub("e", string.uhar(0xF000))
local expr = "f1(" .. mx .. ")"
return math.eval(expr)

et un bout de morceau du code d'Adriweb :
Code: Tout sélectionner
str:gsub(string.uchar(0xF000), "e"):gsub("−","-")

en fait la fonction ConvertFromTI n'as pas trop d'utilité dans mon cas
j'ai fait directement :
Code: Tout sélectionner
ta = ta:gsub("e", string.uchar(0xF000)):gsub("−","-")
Image
Avatar de l’utilisateur
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 28.5%
 
Messages: 4461
Images: 18
Inscription: 07 Nov 2014, 00:43
Genre: Homme
Calculatrice(s):
MyCalcs profile


Retourner vers Nspire-Lua

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1079 utilisateurs:
>1067 invités
>7 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)