Indexation des numéros des variables

neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
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 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Regarde si cette astuce ne pourrait pas t'aider.
0
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   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 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
??????????????
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 63 Date d'inscription   Statut Membre Dernière intervention   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 63 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
[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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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