Indexation des numéros des variables

neocol Messages postés 69 Statut Membre -  
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,
J'ai déclaré des variables int : C1, C2, C3, C4...., C15.

Je veux appliquer une simple fonction dans laquelle je dois mettre ces variables dans une boucle,

For (i=1; i<=15; i++)
{
C'i' + C'i+1' ;
printf(" C%d = %d \n"; i, C'i');
}

Ma question est comment écrire le ' i ' à telle façon il sait que C'i' dont le i est variable et va prendre des valeurs 1,2...15 ( 'i' ou "i" ou {i} ..).

J'espère que ma question était claire, et merci d'avance.

5 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
Bonjour,

Regarde si cette astuce ne pourrait pas t'aider.
0
neocol Messages postés 69 Statut Membre 1
 
Bonjour,

J'ai cherché déjà dans ce site, mais çà répond pas.

Merci Frank P
Cordialement
Youness MOURTAJI
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
??????????????
J'ai cherché déjà dans ce site, mais çà répond pas.
T'as frappé? t'as sonné à la porte???
Non, en fait, je te proposais de revoir ton projet et d'utiliser un tableau au lieu de 15 variables...

En cliquant sur le lien que je te donne plus haut, tu as une explication de comment faire. Extraits :

remplir un tableau de 10 valeurs (0, 1, 2, 3, ...8, 9)
int Toto[10];
int Indice;

for (Indice = 0; Indice <= 9; Indice++) {
Toto[Indice] = Indice;
}


restituer ces valeurs après calcul :
int Toto[10];
int Indice;

for (Indice = 0; Indice <= 9; Indice++) {
Toto[Indice] = Toto[Indice] + Toto[Indice];
printf(Toto[Indice])
}
0
neocol Messages postés 69 Statut Membre 1
 
Ce que je veux d'ailleurs,

C'est avoir plusieurs tableaux, Toto1[indice1], Toto2[indice2], Toto3[indice3]....

je veux une indexation sur les numéro des tableaux. c-à-d écrire Toto1, tot2, toto3 dans une boucle.

J'ai pensé à utiliser un tableaux avec deux dimensions.

mais je veux une solution pour l'indexation des num des tableaux

For ( i=1; i<5; i++)
{
Toto'i'[indice'i'];

}

Je veux savoir comment écrire le i pour être compris que c'est une variable, et avoir un résultat comme Toto1, Toto2 ....
cordialement
0
neocol Messages postés 69 Statut Membre 1
 
En Shell pour écrire une telle boucle ,

for i in 1..5

"Toto" $i "[indice" $i "]"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Statut Contributeur 1 847
 
mais je veux une solution pour l'indexation des num des tableaux
For ( i=1; i<5; i++)
{
Toto'i'[indice'i'];
}

Pas possible en C. Et à vrai dire, ça ne manque pas.
Tu mets une dimension de plus à ton tableau et problème résolu.
Exemple :
for(i=0;i<5;i++) /*en C, les tableaux commencent à l'indice 0, pas 1*/
   Toto[i][...];

Grosso modo, au lieu d'écrire Toto'i', tu écris Toto[i] (tu remplaces les apostrophes par les crochets). C'est très proche !
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Et en C les indices des tableaux doivent être des entiers, alors tu ne pourras pas écrire quelque chose comme :

indice" $i "

dans le 2ème crochet, mais quelque chose qui soit un entier.


Dal
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
A la rigueur, si tu veux nommer tes indices, tu peux utiliser un enum, qui est une façon d'énumérer un ensemble de constantes entières.

#include <stdio.h>

int main(void)
{
    enum {Indice0, Indice1, Indice2, /* par défaut l'enum commence à 0 */
        Indice3, Indice4, Indice5,
        Indice6, Indice7, Indice8,
        Indice9, Indice10, Indice11,
        Indice12, Indice13, Indice14,
        MAXINDICES                   /* MAXINDICES est ajouté en
                                      * 16ème élément par commodité,
                                      * il vaut donc 15 */
    };

    int toto[MAXINDICES][MAXINDICES];
    int i;

    printf("il y a %d indices\n", MAXINDICES);
    printf("Indice0 vaut %d\n", Indice0);
    printf("Indice14 vaut %d\n", Indice14);

    for (i = Indice0; i < MAXINDICES; i++)
    {
        toto[i][i] = 12 * i; /* y mettre qq chose */
    }

    printf("toto[Indice7][Indice7] = %d\n", toto[Indice7][Indice7]);


    return 0;
}

J'ai repris ta boucle qui applique le même numéro d'indice. Note qu'en faisant cela tu ne remplis qu'une partie du tableau.


Dal
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
[Dal],

Il a parlé de "Toto" $i "[indice" $i "]" et non de indice" $i " (guillemets mal positionnés). Du coup, il parlait bien d'un entier (syntaxe bash).
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut fiddy :-)

En lisant ceci, je lis qu'il veut pouvoir (entre autres) mettre entre crochets dans sa syntaxe C, le mot "indice" auquel il concatène un élément variable (qui se trouve être un entier).

Le tout ne forme pas un entier.

S'il veut y mettre un entier, et rien d'autre, il n'y a pas de problème.


Dal
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Re,

En revanche, en bash, où les tableaux associatifs sont gérés, l'évaluation faite du contenu de l'indice permet les acrobaties dont on parle.

#!/bin/bash

declare -A array

for i in {1..5}
do
        array[indice$i]=$i
done

echo ${array[indice2]}

donne : 2


Dal
0