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 :

Table de produit


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Table de produit
    Bonjour à tous, je suis nouveau

    je debute des etudes où nous faisons de la programation.

    Alors voila, je dois faire un exercice pour afficher "Un table de produit pour N allant de 0 à 10"

    Cela devrait ressembler a peu près a ça:

    X*Y I   0   1   2   3   4   5   6   7   8   9  10
    --------------------------------------------------
      0  I   0   0   0   0   0   0   0   0   0   0   0
      1  I   0   1   2   3   4   5   6   7   8   9  10
      2  I   0   2   4   6   8  10  12  14  16  18  20
      3  I   0   3   6   9  12  15  18  21  24  27  30
      4  I   0   4   8  12  16  20  24  28  32  36  40
      5  I   0   5  10  15  20  25  30  35  40  45  50
      6  I   0   6  12  18  24  30  36  42  48  54  60
      7  I   0   7  14  21  28  35  42  49  56  63  70
      8  I   0   8  16  24  32  40  48  56  64  72  80
      9  I   0   9  18  27  36  45  54  63  72  81  90
     10  I   0  10  20  30  40  50  60  70  80  90 100
    Le soucis, c'est que dans mes boucles (voir bout de code plus loin), j'ai du définir un espace entre chaque affichage de variable.
    Quand la valeur passe à 2 décimale, tout, TOUT ce décale.
    Y a y-il un moyen de faire pour que les décimales empiètent sur les espace les précédents ?

    Voici le bout 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
    23
    24
    25
    26
    27
    #include <iostream>
    #include <conio.h>
    #include <stdlib.h>
     
    using namespace std;
    void F_exo5( )
    { system("cls");
        cout << "Afficher la table des produits pour N variant de 0 a 10" << endl;
        cout << "=================================\n\n";
     
        int i,j;
        cout << "X*Y I   ";
        for (j=0;j<=10;j++)
            cout << j << "   ";
        cout << endl << "---";
        for (j=0;j<=10;j++)
           cout << "-----";
        cout << endl;
        for(i=0;i<=10;i++)
        {
            cout << i <<"   I";
            for(j=0;j<=10;j++)
                cout << "   " <<i*j;
            cout << endl;
        }
        _getch( );
    }

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour et bienvenue !

    Si j'ai bien compris (je n'en suis pas sûr ) il suffirait d'une petite fonction pour ajouter des espaces en fonction du nombre de chiffres du nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //==============================================================================
    #include <iostream>
    //==============================================================================
    void print_number(const int number)
    {
        if(number > 100)     std::cout << std::string(1, ' ') << number; //1 espace
        else if(number > 10) std::cout << std::string(2, ' ') << number;//2 espaces
        else                 std::cout << std::string(3, ' ') << number;         //3 espaces
    }
    //==============================================================================
    Ayant très peu de math à mon actif.. il y a sans doute une formule plus concise...).

    Ou alors, si c'est bien de chiffres decimaux qu'il est question, il s'agirait de les tronquer. Mais je n'ai pas l'impression que ce soit ce dont il s'agit.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Il existe std::setw pour définir le nombre de caractère minimal sur lequel doit être écrit le texte (et std::setfill, std::right et std::left pour un peu plus de contrôle).

    _getch( ) -> std::cin.get(). Le mieux reste de configurer son logiciel pour que la console reste ouverte.
    system("clr") et conio.h -> pas portable et inutile.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci à vous,

    @PilloBuenaGente: T'as réponse ne me convient pas :3! en c je me souviens d'une chose du genre printf("%3d")+VARIABLE

    @jo_link_noir: Je te remercie, je vais essayer de suite std::setw!
    Les autres infos me sont utiles pour moi, mais allons pas frustré le prof.. !
    Les system("cls"); viennent du prof. Pas de moi !

    J'editerais mon post si tous a fonctionné

    Edit: C'est exactement ce que je voulais. Merci à vous !

    PS: j'ai essayé std::cin.get(), ca n'a pas le meme effet. cin.get() attends l'appui de l'utilisateur sur ENTER. Alors que getch() attends juste l'appui d'une touche. (?)

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

Discussions similaires

  1. [MySQL] Jointure de tables sans produit cartesien
    Par keybon dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2013, 21h30
  2. [MySQL] Conseil architecture tables fiche produit bilingue
    Par arnofly dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 24/04/2013, 13h29
  3. Trigger pour 3 tables (commande,produit,ligne de comande)
    Par asmar dans le forum Développement
    Réponses: 3
    Dernier message: 05/12/2009, 12h03
  4. Produit Cartésiens entres Tables
    Par faressam dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/06/2008, 08h57
  5. Table produit. Un produit a plusieurs prix
    Par Cyrius dans le forum Requêtes
    Réponses: 10
    Dernier message: 30/10/2005, 00h34

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