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 :

Tableaux et interprétation.


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Tableaux et interprétation.
    Bonsoir à tous.

    Bon, je l'avoue, je suis dans l'impasse.
    J'ai trouvé une de mes questions dans le FAQ, mais la, ça bloque.

    Je cherche à "créer" un tableau à double entrée, pour "simuler" des positions / coordonnées (x,y).

    Donc j'arrive à créer le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    int main()
    {
        const int Xmax=45;  //Je définie les limites de mon tableau.
        const int Ymax=19;
        int t[Xmax][Ymax]; //Je définie ici mon tableau
     
        size_t j, i;
        // A partir de la, c'est la reprise de l'idée pour lire un tableau donnée dans le FAQ.
        /* Parcourons les elements du tableau (t[0] a t[19]) */
        for(j = 0; j < sizeof(t) / sizeof(t[0]); j++)
        {
            /* Pour chaque element t[j] du tableau, initialisons */
            /* les elements de t[j] (t[j][0] a t[j][45])          */
            for(i = 0; i < sizeof(t[j]) / sizeof(t[j][0]); i++)
            {
                t[j][i] = j;    /* Puis affichons t[j][i] */
                printf("%d\t", t[j][i]);
            }
            printf("\n");
        }
    return 0;
    }
    Mon code m'affiche donc 19 fois le numéro 0, puis 19 fois le numéro 1, ainsi de suite.


    Le problème, c'est que je veux pas ces chiffres moi, je veux ma représentation faite par mes soins. (C'est moi qui ai manuellement dessiné le circuit.)

    De là, j'ai plusieurs questions.

    - Est-il possible d'initialiser ces valeurs, pour reconnaître la piste, les bords de piste et des objets posés sur le chemin ?

    - Si oui, puis-je rentrer autre chose que des caractères, comme par exemple un code ASCII (dans mon cas le 174 et 175 pour symboliser les bords de piste) via une définition en char ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     // Définition char du caractère ASCII 174  
    char s = 174;
    printf("%c", s);
    - Ou simplement entre les deux, puis-je demander à mon tableau qui initialise des valeurs comme M pour mur, de remplacer à l'affichage M par mon ASCII ?



    Cordialement, et merci d'avance,

    War Condom.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Bonsoir,

    Citation Envoyé par Warcondom Voir le message
    Mon code m'affiche donc 19 fois le numéro 0, puis 19 fois le numéro 1, ainsi de suite. Le problème, c'est que je veux pas ces chiffres
    Personne ne t'oblige à rentrer ces chiffres-là en particulier. La ligne qui remplit ton tableau est la ligne 21, dans ton extrait.

    moi, je veux ma représentation faite par mes soins. (C'est moi qui ai manuellement dessiné le circuit.) De là, j'ai plusieurs questions.

    - Est-il possible d'initialiser ces valeurs, pour reconnaître la piste, les bords de piste et des objets posés sur le chemin ?
    Ça fait un sacré raccourci ! On déduit donc de tes questions que tu représentes soit un circuit électronique, soit (plus probablement au vu de la dernière phrase), un jeu en 2D vu de dessus type Tower Defense ou Pac Man.

    Pour ta première interrogation, tu peux initialiser à l'avance un tableau à plusieurs dimensions en imbriquant des accolades :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        int tab[2][3] = { {1,2,3}, {4,5,6} };
    … de là, tu peux fixer n'importe quelle valeur.

    Ensuite, tu peux entrer autant d'informations que tu le souhaites dans un tableau. Ça ne dépend que du type de données que tu choisis et de la façon dont tu l'exploites. Par exemple, pour détecter les bords, si tu considères que tes cases sont carrées et qu'il y a donc maximum quatre « murs » autour de ta position, il suffit d'utiliser un bit par bord. Par exemple, le bit 0 pour le nord, le bit 1 pour l'est, le bit 2 pour le sud et ainsi de suite. Ça fait donc 16 combinaisons, qui tiennent dans exactement quatre bits et que tu peux donc largement représenter dans les cases de ton tableau puisqu'elles sont chacune formées par un int.

    - Si oui, puis-je rentrer autre chose que des caractères, comme par exemple un code ASCII (dans mon cas le 174 et 175 pour symboliser les bords de piste) via une définition en char ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     // Définition char du caractère ASCII 174  
    char s = 174;
    printf("%c", s);
    Là encore, tu viens de faire un raccourci : à aucun moment tu n'as inséré de caractère dans le tableau de ton exemple initial.

    - Ou simplement entre les deux, puis-je demander à mon tableau qui initialise des valeurs comme M pour mur, de remplacer à l'affichage M par mon ASCII ?
    C'est ça le truc : le C est procédural. Tu ne vas pas « demander à ton tableau » de se comporter d'une certaine manière. Un tableau n'est qu'une grille de données du même type. C'est à toi de la lire, de la remplir et de réagir comme tu le souhaites en fonction de ce que tu y trouves.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Tout d'abord, merci de ta réponse.

    J'ai enfin réussit à afficher mon truc avec une combinaison de ton tableau et d'une fonction de manipulation de fichier .Txt.

    Donc mon fichier txt s'affiche correctement, en initialisant le tableau au passage.
    Mais, je bloque toujours sur l'aspect de remplacement de caractères lors du printf.

    En fait, il faudrait une fonction qui si il y "CECI" alors remplacer par "CELA" ?

    De plus, je vois comment afficher le contenu d'une "case" d'un tableau à une seule dimension, mais lorsque je prends le schéma pour celui-ci, il ne m'écrit rien.



    Cordialement.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/07/2007, 13h06
  2. Réponses: 4
    Dernier message: 18/02/2007, 20h28
  3. [Tableaux] [débutant] scripts PHP non interprétés
    Par alexbigot dans le forum Langage
    Réponses: 5
    Dernier message: 06/12/2006, 15h03
  4. [Tableaux] Interprétation chaine de caractères
    Par yAnSoLo82 dans le forum Langage
    Réponses: 7
    Dernier message: 27/10/2005, 09h18
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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