Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/08/2012, à 20:52

philoup44

Tableau ---> Trouver l'indice d'une valeur

Salut

Question sur les Tableaux

à partir d'un indice, je peux obtenir la valeur correspondante
echo ${tableau[indice]}   ----> affiche la valeur

Mais l'inverse
Connaissant la valeur comment afficher son indice correspondant ??

Pour obtenir la liste de tous les indices conduisant à un élément défini d’un tableau,
on utilise la syntaxe :

${!nomtab[*]}

Exemple

tableau[10]=a
tableau[20]=b
tableau[30]=c
tableau[40]=Bobo
echo "liste de tous les indices"
echo ${!Tableaus[*]}   ---> 10 20 30 40

Avec une boucle FOR

for i in ${!Tableau[*]}
do
a=${Tableau[i]}
     # si je cherche les éléments contenant B
      if [[ "$a" = B* ]]
      then
      echo "$i  --->  ${Tableau[i]}"   # affiche 40  ---> Bobo
      fi
done 

ici j'obtiens l'indice correspondant à Bobo soit 40
en inserant une condition
on peut y arriver

Mais il n'y a pas plus simple ??

NB
cette solution marche tres bien pour moi
Aussi, si il n'y a pas mieux ou "plus propre"
Ce n'est pas grave smile

Hors ligne

#2 Le 12/08/2012, à 21:01

lann

Re : Tableau ---> Trouver l'indice d'une valeur

Oui mais s'il y a deux valeurs égales dans le tableau à deux indices différents, ça ne marche pas.
Un peu bizarre ton idée de rechercher l'indice dans le tableau.
D'habitude, il faut sauvegarder, l'indice du tableau récupéré, dans une variable

Hors ligne

#3 Le 12/08/2012, à 21:27

philoup44

Re : Tableau ---> Trouver l'indice d'une valeur

Salut lann

lann a écrit :

Oui mais s'il y a deux valeurs égales dans le tableau à deux indices différents, ça ne marche pas.

Je viens de tester dans mon script
Et si je met 2 valeurs identiques avec 2 indices différents
Et bien , chez moi, cà m' affiche bien les 2 résultats

if [[ "$a" = N* ]]

test condition
17 ---> a7 ---> Npiona
18 ---> a8 ---> Ntour1
27 ---> b7 ---> Ncav1
28 ---> b8 ---> Ncav1
37 ---> c7 ---> Npionc
.
....etc

ici les valeurs Ncav1 apparaissent 2 fois
indice       valeurs
27     --->   Ncav1
28     --->   Ncav1

lann a écrit :

Un peu bizarre ton idée de rechercher l'indice dans le tableau

Je débute en shell

Dans mon "script"
Les indices correspondent ici à la position de pièces sur un échiquier

TabPosPieces=( 0 0 0 0 0 0 0 0 0 0 0 Btour1 Bpiona 0 0 0 0 Npiona Ntour1 0 0 Bcav1 Bpionb 0 0 0 0 Ncav1 Ncav1 0 0 Bfou1 ...etc )
donc par exemple, je peux m'en servir pour dire
si indice = piece adverse alors déplacement possible (prise)
si indice vide ---> alors case vide ---> déplacement possible
sinon déplacement interdit etc ...

Ce meme indice dans un autre tableau donne la position en notation humaine

Tab_Nom_Cases=( 0 0 0 0 0 0 0 0 0 0 0 a1 a2 a3 a4 a5 a6 a7 a8 0 0 b1 b2 b3 b4 b5 b6 b7 b8 0 0 c1 c2 c3 c4 c5 c6 c7 c8 0 0 ...etc )
si indice i = 27

echo ${Tab_Nom_Cases[i]}     ---> b7
echo ${Tab_Nom_Cases[27]}  ---> b7

et comme les indices 0 à 10 sont "libres"
je peux y stocker certaines données pour la suite
par exemple, mettre une valeur " evaluation de la position " à l'indice 0
une valeur positive = avantage blanc
(Mais si c'est une valeur à virgule style +1,55 je me doute qu'il y aura un probleme.... à voir plus tard)

j'ai découvert les Tableaux
Et j'essaie de les exploiter au mieux
et ça m'a paru interessant d'utiliser l'indice de cette façon
J'ai encore beaucoup à apprendre, et je dois certainement commettre des "impairs" tongue

lann a écrit :

D'habitude, il faut sauvegarder, l'indice du tableau récupéré, dans une variable

Là, j'ai pas compris wink

Merci pour ta réponse

Dernière modification par philoup44 (Le 12/08/2012, à 23:21)

Hors ligne