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 :

affichage d'un déplacement dans un tableau


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut affichage d'un déplacement dans un tableau
    bonjour a tous !
    je reviens vers car je suis a nouveau bloquer sur mon projet..
    le tableau représente un labyrinthe. je souhaite deplacer le 1. jai essayer avec un switch D G H B represente droite gauche etc..
    mais je pense qu'il y a un rpoblème d'affichage ou de syntaxe.
    merci d'avance

    Code c++ : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    void affichePlateau()
    {
        int j=21;
        int i=21;
        char plateau[i][j];
        char leC=176;
        char leB=' ';
        char j1='1';
        char leD;
     
        for (int i = 0; i < 21; i++)
        {
            for (int j = 0; j < 21; j++)
            {
                plateau[i][j] = leC;
     
     
     
                if (i%3==1)
                {
                    plateau[i][j]=leB;
                }
     
                if (j%3==1)
                {
                    plateau[i][j]=leB;
                }
                plateau[1][1]=j1;
                std::cout<< plateau[i][j];
     
     
            }
     
     
            std::cout<<'\n';
        }
     
        std::cout<<"D, G, H, B ?\n";
        std::cin>>leD;
     
        switch (leD)
        {
        case 'D':
            j1=plateau[i+3][j];
            break;
     
        case 'G':
            j1=plateau[i-3][j];
            break;
        case 'H':
            j1=plateau[i][j+3];
            break;
        case 'B':
            j1=plateau[i][j+3];
            break;
        default:
            std::cout<<"Erreur";
        }
        std::cout<< plateau[i][j];
        std::cout<<'\n';
     
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Salut,

    Plusieurs remarques sur ton code:
    • Choisi bien tes noms de variables: tu définis deux fois i et j alors que tu pourrais par exemple définir width et height pour la taille du tableau et ainsi les réutiliser dans tes boucles.
    • Tu initialises en boucles la case 1, 1 de ton tableau avec la valeur de j1.


    Ensuite, côté algorithme: tu cherches à déplacer j1 sur le tableau hors dans ton code, tu écris clairement que tu remplaces j1 par le contenu de la case du tableau:
    Voici les étapes que tu devrais suivre:
    1. on sauvegarde la position courante de j1 (dans ton cas, la position (1,1) ),
    2. on calcule la nouvelle position en fonction de la direction ( (1+3, 1)... etc, fait attention aux bords de ton tableau),
    3. on change la valeur de l'ancienne position par un espace (ta variable leB),
    4. on change la valeur de la nouvelle position de j1 par j1.


    Je ne mets pas de code exprès pour que tu t'entraines un peu mais n'hésite pas à demander si tu as des problèmes d'implémentation.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Je n'ai lu que les premières lignes, et ton code est déjà pas bon.
    Ta variable plateau est un VLA, qui n'existe pas en C++.
    char leC=176; sachant qu'un char peut représenter de –128 à 127
    Pas besoin d'aller plus loin, tes noms de variables compliquent la lecture, tes variables ont des portées inutilement grandes, y'a de multiples retours à la ligne. Heureusement c'est indenté correctement à priori, mais ça reste peu lisible. Et donc peu lu.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par Bousk Voir le message
    char leC=176; sachant qu'un char peut représenter de –128 à 127
    Dans mon souvenir char prend la plage de valeur de unsigned char ou signed char. (Ces valeurs (-128 et 127) sont le min et le max pour signed char mais la norme n'interdit pas d'avoir plus sous certaines conditions.)

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Ehonn Voir le message
    Dans mon souvenir char prend la plage de valeur de unsigned char ou signed char. (Ces valeurs (-128 et 127) sont le min et le max pour signed char mais la norme n'interdit pas d'avoir plus sous certaines conditions.)
    Si ce n'est que l'intervalle possible (comprend dans le cas présent: le nombre de valeurs que l'on admet entre la valeur minimale et la valeur maximale représentable) reste forcément identique que l'on ait affaire à un signed char, à un unsigned char ou à un char, et que ca, c'est garanti par la taille des dits types, car elle doit être strictement égale.

    Alors, oui, effectivement, la taille (en bit) d'un char doit être "au minimum suffisamment grande pour pouvoir représenter l'ensemble des caractères du character set envisagé", ce qui fait que l'on pourrait très bien envisager d'avoir des char codés sur 16 bits et permettant donc la représentation de 16 353 valeurs différentes.

    Mais, comme, en pratique, nous n'avons pas encore trouvé la moindre architecture qui considère qu'un char dispose de 16 bitst (ou plus), on peut assez facilement admettre le fait que tous les char seront codés sur 8bits, en accord avec la norme ASCII étendue. Et, de fait, c'est quand même bel et bien la situation que l'on constate de manière systématique

    Dés lors, oui : rappelons le clairement une bonne fois pour toutes : la norme n'impose absolument aucune taille (en nombre de bits) pour les différents types primitifs, et il en va effectivement de même pour les caractères. Cependant, si l'on observe assez régulièrement des variations au niveau de la taille des types long et / ou long long, les types chars (et toute sa famille signed / unsigned) sont globalement d'une taille qui nous permet de faire l'assertion émise par Bousk sans avoir trop de risques de se tromper
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Dés lors, oui : rappelons le clairement une bonne fois pour toutes : la norme n'impose absolument aucune taille (en nombre de bits) pour les différents types primitifs, et il en va effectivement de même pour les caractères. Cependant, si l'on observe assez régulièrement des variations au niveau de la taille des types long et / ou long long, les types chars (et toute sa famille signed / unsigned) sont globalement d'une taille qui nous permet de faire l'assertion émise par Bousk sans avoir trop de risques de se tromper
    La norme impose sizeof(char) == 1, elle impose aussi qu'un int soit minimum sur 16 bits, et qu'un long sur au moins 32 bits.
    Mais oui, pas de taille précise, sauf pour char.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Personnellement j'ai en tête un truc encore plus tordu qui raconte qu'un char, n'est certes ni garanti signed ni garanti unsigned, mais que son range doit seulement être au moins 0-127.
    Mais bon, à fortiori pour un débutant, on va prendre le cas général. Je n'ai encore jamais vu un char autrement que sur 8 bits, et sur Visual Studio un char est un signed char.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    merci darkman je vais essayer de suivre tes conseil!
    et pour le char 176 ce n'est pas un problème c'est pour afficher un caractère spécial

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    darkman je ne vois pas comment faire pour sauvegarder la position courante

  10. #10
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Comment sauvegardes-tu une variable?

    Je pense qu'avant de te lancer des projets de "grandes" envergure, fait quelques tuto de programmation objet (C++ ou autre langage).

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    je commence des etudes en informatiques et j'ai du mal en c++. peut être que le terme sauvegarder que tu emploi n'est pas celui que j'utilise .

  12. #12
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Ce n'est pas un problème de C++ à proprement parler mais un problème d'algorithme. Est-ce que dans ton cursus tu as des cours sur l'algorithme?

    Sinon par sauvegarder une variable, je veux dire stocker une valeur (un entier, un nombre flottant, une chaine de caractères ou n'importe quel type ou objet) dans une variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int unEntier = 42;
    float unFloat = 2.5;
    std::string duTexte = "Blablabla";
    Encore une fois, fait des tutoriaux de bases de programmation. Ça peut paraître frustrant au début parce que l'on ne fait pas grand chose mais une fois que tu auras des bases plus solide et que tu comprendras les mécanismes de programmation, tu pourras t'attaquer à tous les projets que t'imagines.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/08/2007, 17h58
  2. affichage de mes donnees dans un tableau
    Par dedel53 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/05/2007, 18h22
  3. [MySQL] Affichage de résultats SQL dans un tableau
    Par illight dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/02/2007, 09h24
  4. Réponses: 2
    Dernier message: 28/11/2006, 11h20
  5. Réponses: 4
    Dernier message: 11/07/2006, 22h58

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