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 :

rajouter un "s" si nécessaire


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Par défaut rajouter un "s" si nécessaire
    Bonjour

    Je suis tout débutant en C++!
    J'aimerais ajouter un s si c'est nécessaire au contenu d'un message cout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<"vous aves encore 5 jour"<<pluriel<<"de congé"<<endl
    En pseudo code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Si (monconge > 1) alors pluriel = s
    sinon pluriel = ""
    fin
    Je déclare

    char pluriel

    si j'y place un s: pluriel=='s'
    cela fonctionne mais pas si j'y place rien: pluriel==''

    PS: en VB que je connais mieux: pas de problème

    Merci d'avance aux programmeurs confirmés

  2. #2
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Bonjour,

    Attention, et c'est totalement différent, relis ton cours sur le C++.


    Ensuite, ne peut pas être correct, car une absence de caractère n'est pas un caractère ! En fait, un char c'est un nombre situé entre -128 et 127 (ou 0 et 255 si unsigned). La table ASCII défini la correspondance entre le nombre et le caractère voulu. Il n'y a aucun caractère « rien du tout » dans cette table.
    Il faut au moins que tu y places une espace, mais ce n'est pas non plus ce que tu veux.
    Si tu veux appliquer ton pseudo-code, il faut que tu utilises une std::string et non un char.

    Autrement, la solution la plus correcte est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cout << "vous aves encore " << monconge << " jour";
    if(monconge > 1)
        cout << 's';
    cout << " de congé." << endl;
    ou, si tu voues une adoration aux instructions sur une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << "vous aves encore " << monconge << " jour" << (monconge > 1 ? "s" : "") << " de congé." << endl;
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Par défaut
    Merci florian

    Je vais utiliser ta solution .
    Mais je pensasis qu'en C++ on pouvait assigner simplement une valeur "vide" à une variable comme en VB.

  4. #4
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Le C++, dérivant du C, est un langage de plutôt bas niveau d'abstraction. En tout cas, quand tu utilises un char, tu travailles très bas niveau, c'est-à-dire proche de la réalité, à savoir la table ASCII, qui est la réalité de tout caractère en informatique (sans parler des encodages plus riches tels que l'unicode, bien sûr).
    Quand tu utilises std::string, tu travailles davantage haut niveau.

    Je ne connais pas VB, mais je suppose que c'est un langage de haut niveau d'abstraction. Par conséquent, tu es toujours un minimum détaché de la réalité. Tu te soucies beaucoup moins des détails, au détriment des performances.

    C'est ce qui fait qu'on peut trouver le C++ plus compliqué.
    Dès que tu travailles avec les types de base (int, char, etc., en outre la partie C du C++), tu es en bas niveau. Lorsque tu utilises des abstractions telles que std::string (pour rester dans le domaine des caractères et du texte), tu travailles en haut niveau.
    Une fois que tu as compris ça, le C++ paraît plus simple.

    Un petit ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  5. #5
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Au passage (rien à voir avec le C++) quitte à mettre le pluriel, autant enlever la faute sur "avez" qui s'est glissé dans la phrase.

    Et puis pour le test du pluriel, je crois qu'en français le pluriel commence à 2, donc ça change rien pour des entiers mais par pour des flottants. Bon c'est complètement du détail et en plus je peux pas vérifier.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Dans le même genre de remarque, j'ai fini par faire selon le besoin /demande client une des deux solutions suivantes:
    Solution 1 (chaîne générique):
    "vous avez XX jour(s) de congés".
    Solution 2 (2 chaines différentes):
    "vous avez 1 jour de congés".
    "vous avez XX jours de congés".

    L'avantage, c'est qu'en cas de traduction le pluriel n'est pas en dur dans le code!

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