Un truc que je ne comprends pas sur les chaînes

N'oubliez pas de consulter les sujets avant de poser votre question, merci.

Un truc que je ne comprends pas sur les chaînes

Messagepar Archibald » 07 Nov 2019 14:00

Bonjour,

j'écris un petit truc pour illustrer le produit d'une matrice ligne par une colonne :

Code: Tout sélectionner
view(0, 7, -1, 6), // Grille(0, 1 + i),
L := [2, 0, 1], C := [3, 4, 2],
d := 6, dd := .5*(1 + i),

CALC := "$", calc := 0,
Ligne([dd, dd + 3, bar(dd) + 3, bar(dd)], 1),
Ligne([d + d*i - dd, d + d*i - dd - 3*i, d + (d - 3)*i + bar(dd), d + d*i + bar(dd)], 1),
for k from 1 to 3 do
    l := k, c := d + (d - k)*i,
    Label(l, L[k]),
    Seg(l + dd, l + bar(dd)), Seg(c - dd, c + bar(dd)),
    Label(c, C[k]),
    calc := calc + L[k]*C[k],
    CALC := [CALC, L[k], "\times", C[k]],
    if k <> 3 then CALC := [CALC, "+"], fi,
    Seg(l + .5*i, c - .5),
    DotStyle := dotcircle, DotSize := 25,
    Point((l + c - .5 + .5*i)/2),
    Label((l + c - .5 + .5*i)/2, "$\times$"),
od,
CALC := [CALC, "=", calc, "$"],
Label(d, CALC),


Ce n'est pas très joli, du coup j'explique : dans CALC je construis petit à petit la chaîne de caractère représentant le calcul effectué, et dans calc je fais le calcul.

En fin d'exécution, CALC doit contenir la liste
Code: Tout sélectionner
["$",2,"\times",3,"+",0,"\times",4,"+",1,"\times",2,"=",8,"$"]


(j'ai vérifié avec un Message, c'est le cas), et je m'attends à ce que le Label affiche le résultat de la concaténation de celle-ci : "$2\times 3+0\times 4 + 1 \times 2 = 8 $".

Or ce n'est pas le cas, ça m'affiche
Code: Tout sélectionner
[$,2,\times,3,+,0,\times,4,+,1,\times,2,=,8,$]

avec les virgules et les crochets...

Pourtant, si j'écris :

Code: Tout sélectionner
Label(d, ["$",2,"\times",3,"+",0,"\times",4,"+",1,"\times",2,"=",8,"$"]),


j'ai bien le résultat voulu. Que rateuh-je ?
Archibald
 
Messages: 38
Inscription: 21 Fév 2010 09:18

Re: Un truc que je ne comprends pas sur les chaînes

Messagepar P.Fradin » 07 Nov 2019 15:46

Bonjour Archibald ,

Tu n'as rien raté, c'est tout simplement qu'à la fin, il faut concaténer toute la liste en une chaîne avec la fonction Concat dans la toute dernière instruction :
Code: Tout sélectionner
Label(d, Concat(CALC))
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Un truc que je ne comprends pas sur les chaînes

Messagepar Archibald » 07 Nov 2019 18:21

Merci. Je pensais que la conversion était automatique.
Archibald
 
Messages: 38
Inscription: 21 Fév 2010 09:18


Revenir vers Questions - Réponses

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 15 invités

cron