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

Langage C++ Discussion :

problème avec le tableau


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut problème avec le tableau
    salut

    je veux créer un tableau triangulaire
    sous la forme
    *
    **
    ***
    ****
    mais ça marche pas:
    voila mon travail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int *tab = new int[4];
     
    for (int i=0;i<4;i++)
    	{	
     		for(int j=0 ; j<=i;j++)
    		{
    			tab[i][j]= '*';			
    			cout << tab[i][j];
    		}		
    		cout <<"\n";
    	}
    un autre question:

    comment le faire pour rendre comme ça

    ****
    ***
    **
    *

  2. #2
    Membre actif
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Points : 213
    Points
    213
    Par défaut
    Tu déclare tab comme un tableau à une dimension, donc ça ne vas pas aller.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 16
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Salut,

    Est-ce que tu veux afficher des triangles avec des étoiles ou réellement utiliser comme moyen de stockage un tableau triangulaire?

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    salut
    je veux afficher des triangles avec des étoiles
    je ne sait pas qui était juste

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Pour faire ce que tu décris, il va te falloir créer un tableau à deux dimensions.
    (pour l'instant tu n'a qu'un tableau à une dimension).

    Puis comme tu veux afficher des étoiles '*', j'utiliserais plutôt le type char.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Bonsoir,

    Voilà une possibilité de code :

    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
     
    #include <iostream>
     
    int main()
    { 
      char tab[4][4];
     
        for (int i=0;i<4;i++)
        {    
            for(int j=0 ; j<=4;j++)
            {
                  if (j<=i)
                    tab[i][j]= '*';
                 else
                       tab[i][j]= ' ';
     
                 std::cout << tab[i][j];
            }
            std::cout <<"\n";        
      }
      return 0;
    }
    Si tu veux le second scénario :
    ****
    ***
    **
    *

    Remplace :
    par :
    Respectueusement,
    A.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    un grand merci
    mais un autre question

    comment faire pour faire le triangle en nombre pas en *

    comme ça

    1
    12
    123
    1234

  8. #8
    Membre actif
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Points : 213
    Points
    213
    Par défaut
    tu remplaces '*' par la valeur de i. Mais attention : '1' != 1.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 16
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Si c'est juste pour afficher un triangle, pas besoin de tableaux:

    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
    #include <iostream>
    using namespace std;
     
    void affiche_etoiles (size_t etoiles_debut, size_t etoiles_fin)
    {
        //Sert à savoir si on augmente ou diminue le nombre d'étoiles à chaque ligne
        int pas = etoiles_debut < etoiles_fin ? 1: -1;
        int i = etoiles_debut-pas;
     
        do
        {
            i+=pas; //incrémentation de i
            for (int j = 0; j < i; j++)
                cout << '*';
            cout << endl;
        } while (i!=etoiles_fin);
    }
     
    int main()
    {
        affiche_etoiles(1,5); //le nombre d'étoiles va de 1 à 5
        affiche_etoiles(4,1); //le nombre d'étoiles va de 4 à 1
     
        return 0;
    }
    Ce qu'il faut que tu comprennes, c'est qu'à la première itération tu imprimes une étoile, à la deuxième 2 étoiles, etc.
    Il n'y a pas besoin d'utiliser de tableau, tu peux le faire directement

    Edit: même chose avec les chiffres

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par hiura Voir le message
    tu remplaces '*' par la valeur de i. Mais attention : '1' != 1.
    merci de bien expliquer

  11. #11
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    '1' = 49 (si stockés dans un entier) car c'est un caractère et donc c'est ça correspondance en ASCII.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, vu du C, 049, c'est de l'octal et ton message devient faux.

    En clair:
    • '0' (char) = 0x30 (hex) = 48 (dec) = 060 (oct)
    • '1' (char) = 0x31 (hex) = 49 (dec) = 061 (oct)
    • '2' (char) = 0x32 (hex) = 50 (dec) = 062 (oct)
    • '3' (char) = 0x33 (hex) = 51 (dec) = 063 (oct)
    • '4' (char) = 0x34 (hex) = 52 (dec) = 064 (oct)
    • '5' (char) = 0x35 (hex) = 53 (dec) = 065 (oct)
    • '6' (char) = 0x36 (hex) = 54 (dec) = 066 (oct)
    • '7' (char) = 0x37 (hex) = 55 (dec) = 067 (oct)
    • '8' (char) = 0x38 (hex) = 56 (dec) = 070 (oct)
    • '9' (char) = 0x39 (hex) = 57 (dec) = 071 (oct)
    • '\0' (char) = 0x00 (hex) = 0 (dec) = 0 (oct) (caractère nul)
    • 'a' (char) = 0x61 (hex) = 97 (dec) = 0141 (oct)
    • 'z' (char) = 0x7A (hex) = 122 (dec) = 0172 (oct)
    • 'A' (char) = 0x41 (hex) = 65 (dec) = 0101 (oct)
    • 'Z' (char) = 0x5A (hex) = 90 (dec) = 0132 (oct)
    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.

  13. #13
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    En effet merci ça m'apprendra à faire un bête copié collé. J'ai edité .
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 16
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    On peut aussi faire:

    Pour l'affecter à '8'...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est même ce que je conseillerais dans certaines circonstances...
    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.

  16. #16
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    • '0' (char) = 0x30 (hex) = 48 (dec) = 060 (oct)
    • '1' (char) = 0x31 (hex) = 49 (dec) = 061 (oct)
    • '2' (char) = 0x32 (hex) = 50 (dec) = 062 (oct)
    • .....
    Attention, ça n'a rien de garanti. Mais de toute façon, je ne vois pas à quoi ça servirait ici, on peut très bie avoir un tableau d'entier, et l'afficher simplement, il n'y a pas besoin pour ça de savoir comment sont gérés les caractères en interne.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est vrai, c'est le cas en ASCII, mais pas en EBCDIC.
    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.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2006, 08h59
  2. Problème avec redimensionnement tableau
    Par PoZZyX dans le forum Réseau
    Réponses: 18
    Dernier message: 20/04/2006, 15h46
  3. Problème avec un tableau et saut de ligne
    Par ero-sennin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/03/2006, 18h48
  4. Problème avec un tableau de tableau
    Par SubZero2 dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2005, 15h25
  5. problème avec un tableau dans un insert ...
    Par vbcasimir dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2005, 14h31

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