IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

for avec des tableaux initialisés


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut for avec des tableaux initialisés
    Bonjour,

    J'ai un petit problème de C pour la gestion de tableau. Je développe une petite application pour game boy advance, j'ai un utilitaire qui me transforme mes images PCX 256 couleurs + palette en fichier d'entete, du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const u16 image_1[] = {
    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
    };
    const u16 image_2[] = {
    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
    };
    ect...
    Mon problème c'est que je voudrais faire une boucle for pour charger mes images automatiquement. Hors si je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const u16 images[10][10];
    puis
    images[0][0] = {
    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
    };
    images[0][1] = {
    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
    };
    etc...
    Ca ne marche pas. Quelqu'un a-t-il une idée pour résoudre mon problème ?
    J'utilise arm-eabi-g++ pour compiler mais je pense que ce problème est commun à tous les compilateurs C.

    Merci par avance.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    L'initialisation après création n'est pas vraiment compatible avec const.
    Donc, soit tu gardes des tableaux const initialisés complètement statiquement, soit tu fais des tableaux non-const pour les initialiser dynamiquement comme tu le veux...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Sans const
    Re,

    Si je fais, dans mon fichier d'entete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    u16 images[10][10]; 
    images[0][0] = {
    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
    };
    J'ai l'erreur:

    error: expected constructor, destructor, or type conversion before '=' token

    Peut-on initialiser un tableau de cette façon ?

    Cordialement.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Hum, non.
    La syntaxe {} pour les tableaux n'est, à ma connaissance, permise que lors de l'initialisation lors de la déclaration.

    Et on ne peut pas faire tableau= quoi que ce soit hors de l'initialisation en déclaration.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Pas de solution
    Re,

    OK c'est bien ce que je pensais, donc pas de possibilité avec mon outils de conversion PCX -> tableau C d'automatiser le chargement.

    Merci pour les reponses.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    J'ai du mal à comprendre ce que tu veux dire.
    Si tu veux mettre des valeurs hard-codées, qu'est-ce qui t'empêche de les avoir directement ?

    Pourquoi cherches-tu à "retarder" l'initialisation si tu la fais de toute façon avec des valeurs hard-codées ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    Tu peux toujours automatiser, mais pas lors de la déclaration de ton tableau.
    A vérifier dans ton bouquin de C mais tu as le droit de faire :
    Premier cas, ton tableau est un tableau de constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int tableau[10][10] = {{1,2,3,4,5,6,7,8,9,10}, {10,9,8....}, ... }
    void fonction()
    {
        //utilisation de tableau[i][j] mais sans modification de sa valeur (c'est peut être la que je me trompe)
    }
    Deuxième cas, tu déclare ton tableau de 10 par 10 sans l'initialiser et tu en fais ce que tu veux (exemple d'initialisation à adapter suivant ton besoin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int tableau[10][10];
    void fonction_init()
    {
        for i=0; i<10; i++
             tableau[0][i] = i;
    }
     
    void fonction()
    {
        //utilisation de tableau[i][j] avec possibilité de modification
    }
    Les experts vont rapidement intervenir si j'ai dit des bétises.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Par défaut
    Outre le problème pointé par Médinoc, tu as une incohérence entre la définition de ton tableau et ton affectation, puisque images[i][j] est de type u16 et pas un tableau... donc quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    images[0][0] = 0xFFFF
    serait mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec des tableaux
    Par vivien313131 dans le forum C
    Réponses: 8
    Dernier message: 07/02/2007, 11h33
  2. [Tableaux] Trier des données avec des tableaux
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2006, 13h39
  3. [Débutante] - Document Word avec des tableaux
    Par Sachiel31 dans le forum VBA Word
    Réponses: 19
    Dernier message: 19/07/2006, 15h17
  4. Réponses: 8
    Dernier message: 09/03/2006, 17h48
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo