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 :

Probleme avec tableau de char


Sujet :

C

  1. #21
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le problème majeur de ton tout premier code n'est pas lié aux tableaux mais à une simple erreur sur les tests ce qui t'envoie dans les décors si index est différent de 0,1 ou2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	if (categorie == 0) {
    	    mot = sports[index];
    	}
    	else if (categorie == 1) {
    	    mot = musique[index];
    	}
    	else if (categorie == 2) {
    	    mot = pays[index];
    	}

  2. #22
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    Ah... effectivement je me suis mechament embrouillé avec les colonne et le lignes de mon tableau à priori !!!

    Je vais regarder ca pour le moment je suis partie sur la solution sur laquelle on m'a aiguiller hier.

    Mais je vais definitivement reprendre mon premier code a un moment histoire de mieux voir ou été mon erreur.

  3. #23
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char* sports[] = {"soccer", "tennis", "course", "musculation", "patin", "escalade", "natation", "ski", "gym", "escrime"};
    char* mot = NULL;
    ...
    mot = sports[index];
    Ca fait avancer le problème ou pas ?

  4. #24
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    Oui ca va m'éviter d'avoir un code à rallonge .

    Merci pour l'aide, tous le monde je reviendrais d'ici deux semaine avec un code complet et fonctionnel de ce que je souhaite faire.

    Mais pour le moment ca avance bien.

  5. #25
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Pour compléter ce que dit sam1507, on a souvent intérêt dans ce genre de questions à localiser le code à modifier lorsqu'on ajoute, supprime ou modifie une catégorie en tabulant les informations. Par exemple, en mettant en globales (une fois n'est pas coutume) pour permettre que ces tableaux soient correctement initialisés par le compilateur tout en étant bien séparé du reste du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef enum {SPORTS, MUSIQUE, PAYS, NB_CATEGORIES} TCategorie;
    char const * sports[]  = {"soccer","tennis","course","musculation","patin","escalade","natation","ski","gym","escrime"};
    char const * musique[] = {"classique","saoul","reggae","jazz","rock","gospel","house","techno","punk","hardcore"};
    char const * pays[]    = {"France","Canada","Argentine","Chili","Allemagne","Australie","Japon","Chine","Maroc","Iran","USA"};
    int LengthCategorie[NB_CATEGORIES] = { sizeof sports/ sizeof (char*) ,
                                           sizeof musique/ sizeof (char*) ,
                                           sizeof pays/ sizeof (char*)
                                          };
    char const * TitreCategorie[NB_CATEGORIES] = {"Sports", "Musique", "Pays"};
    char const  ** Sujets[NB_CATEGORIES] = {sports,musique,pays};
    Tu peux alors simplement ajouter ou supprimer une catégorie ou modifier le contenu des catégories sans avoir à modifier le reste du code du programme et supprimer tous ces if(categorie == ....).
    La premiere ligne permet de définir un index pour chaque catégorie et le nombre de catégories.
    Les trois suivantes donnent la composition des catégories (les chaînes ne sont pas modifiables). Le nombre d'éléments n'a pas besoin d'être le même pour toutes les catégories.
    Ensuite viennent des tableaux qui contiendront dans l'ordre énoncé dans l'énumération
    - le nombre d'éléments de chaque catégorie
    - le titre associé à chacune
    - l'adresse du début des tableaux des éléments de chaque catégorie.

    Pour modifier la composition d'une catégorie, il suffit de changer la liste des éléments. C'est tout. Le reste du code est inchangé.
    Pour ajouter ou supprimer une catégorie, il faut
    - l'ajouter ou la supprimer de TCategorie
    - ajouter ou supprimer le tableau des éléments
    - mettre à jour le tableau des longueurs, des titres et des sujets
    Le reste du code est inchangé.


    le code de ChooseACat() est à adapter pour exploiter ces définitions. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    TCategorie ChooseACat(void)
    {
        int n ;
        printf ("Choisissez parmi les categories suivantes ");
        printf("ou entrez %d pour sortir :\n", NB_CATEGORIES);
        for (n=0; n<NB_CATEGORIES;n++) printf("  %d %s\n", n,TitreCategorie[n]);
        do
        {
          scanf ("%d",&n);
          if(n<0 || n>NB_CATEGORIES) printf("vous devez entrer un nombre entre 0 et %d\n",NB_CATEGORIES);
        } while(n<0 || n>NB_CATEGORIES);
        purger();
        return n;
    }
    et le main() devient quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char const * mot;
    int index ;
    TCategorie categorie;
    srand ( time(NULL) );
    categorie = ChooseACat();
    if(categorie < NB_CATEGORIES)
    {
       index = ChooseRandomNumber(LengthCategorie[categorie]);
       mot  = Sujets[categorie][index];
    ...
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. problème dllImport avec tableau de char[] en paramètre E/S
    Par moulefrite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/12/2008, 10h07
  2. Probleme avec Tableau sous Word
    Par gilles06 dans le forum VBA Word
    Réponses: 8
    Dernier message: 26/02/2008, 23h03
  3. Probleme avec tableau
    Par kika18 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2007, 13h06
  4. Pb avec tableau de char
    Par tintin72 dans le forum C++
    Réponses: 2
    Dernier message: 09/11/2007, 13h13
  5. [Tableaux] probleme avec tableau a recupere
    Par twixster dans le forum Langage
    Réponses: 14
    Dernier message: 16/02/2006, 17h50

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