Indexation des numéros des variables

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

  1. Contributeur
    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
    1. Contributeur
      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
    2. Contributeur
      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
    3. Contributeur
      [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
    4. Contributeur
      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
    5. Contributeur
      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
  2. En Shell pour écrire une telle boucle ,

    for i in 1..5

    "Toto" $i "[indice" $i "]"
    0
    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
      1. Bonjour,

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

        Merci Frank P
        Cordialement
        Youness MOURTAJI
        0
        1. Modérateur
          ??????????????
          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
      2. Modérateur
        Bonjour,

        Regarde si cette astuce ne pourrait pas t'aider.
        0