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 :

Tout au début du C++


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 9
    Points
    9
    Par défaut Tout au début du C++
    Bonjour a tous ! Je débute-débute en C++ et sur ce forum par la meme occasion

    J'ai un petit soucis, je commence juste a coder et cela apparait sous fenetre CMD ( normal ) et a la compilation de ce 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>  // Inclut la bibliothèque iostream (affichage de texte)
    #include <string>
     
    using namespace std; // Indique quel espace de noms on va utiliser
    /*
    Fonction principale "main"
    Tous les programmes commencent par la fonction main
    */
    int main()
    {
      cout << " Bonjour, quel est votre prenom ?" << endl ;
      string prenomUtilisateur("sans nom");
      cin >> prenomUtilisateur;
      cout << "Quel age avez vous ?" << endl;
      string ageUtilisateur ( " pas age " );
      cin >> ageUtilisateur;
      cout << "Selon vous, combien vaut pi ?" << endl;
      string valeurPi("pas pi");
      cin >> valeurPi;
      cout << " Vous vous appelez " << prenomUtilisateur << " vous avez " << ageUtilisateur << " et vous pensez que pi vaut " << valeurPi << endl;
      return 0;
    }

    Au moment de me demander mon age, je rentre par exemple " 18 ans " et le code prend "18" pour l'age et "ans" pour la valeur de Pi
    J'espere que vous m'aurez compris et que vous pourrez m'aiguiller

    Bonne soirée et merci d'avance !

  2. #2
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup de ta rapidité !!

  4. #4
    Membre régulier

    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Je suis aussi tout nouveau dans le monde du C++ (j'ai commencé en même temps avec Python). Puisque le problème est résolu, il faudrait l'indiquer si possible pour que d'autres puissent avoir accès directement à la solution

    En effet, quand il y a des espaces, on utilise plutôt la fonction getline() avec deux arguments, d'abord le "cin" et ensuite le nom de la variable, le tout séparé par une virgule.

    De cette façon, ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cout << "Bonjour, quel est votre prenom ?" << endl ;
      string prenomUtilisateur("sans nom");
      cin >> prenomUtilisateur;
    devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cout << "Bonjour, quel est votre prenom ?" << endl ;
      string prenomUtilisateur("sans nom");
      getline(cin, prenomUtilisateur);
    Comme il se trouve que nous sommes débutants tous les deux, pourrais-tu m'éclairer sur certains points de ton code ?

    - Pourquoi utiliser un type "string" pour l'âge ? Un entier "int" serait ptet plus à propos.

    - Pourquoi utiliser un type "string" pour la valeur de pi ? Pour un nombre à virgule, ça serait pas plus simple un "double" ?

    Aussi, pour la dernière ligne de code, le résultat ne renvoie que la valeur de l'âge entré par l'utilisateur; ça donne un truc du genre : "Vous avez 5." .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << " Vous vous appelez " << prenomUtilisateur << " vous avez " << ageUtilisateur << " et vous pensez que pi vaut " << valeurPi << endl;
    Un poil remanié avec la ponctuation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << "Vous vous appelez " << prenomUtilisateur << ", vous avez " << ageUtilisateur << " ans et vous pensez que pi vaut " << valeurPi << endl;
    Bonne continuation à toi et bon courage pour la suite !

    Guy.

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

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    Citation Envoyé par minnesota Voir le message
    Faut plutôt utiliser std::getline qui fonctionne avec un std::string et pas un (horrible) char * comme la méthode .getline() de std::istream.

    @Garbus> Oui, c'est mieux un unsigned int pour l'âge un double pour π.

  6. #6
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Faut pas pester sur "char" comme ça, qui est un type fondamental (pour pas dire primitif), car après tout, "string" n'est qu'une spécialisation de "basic_string", en l'occurrence "basic_string<char>", n'est-ce pas ? Ensuite, pourquoi j'ai pointé cette ressource ? Tout d'abord parce qu'elle montre que "cin" a des fonctions membres comme "getline" et qu'ensuite, elle pointe également vers la fonction "surchargée et autonome" "getline", et que toute personne s'intéressant un tant soit peu au sujet, ne manquera pas. Enfin, y'a pas qu'une seul manière de faire. On peut très bien laisser l'acquisition sous forme de chaine de caractères, et faire une conversion par la suite, tout au moins si on le souhaite ou si c'est requis, et sans oublier la gestion des erreurs bien entendu.

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

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Il est facile de dépasser un char [] et facile d'avoir des fuites mémoires avec un char *. std::string évite ces soucis
    std::getline est (pour moi) la bonne façon de faire (encore plus pour les débutants qui ne vont pas forcément lire tout le paragraphe en anglais :s mais plutôt regarder le code d'exemple).

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par minnesota Voir le message
    Faut pas pester sur "char" comme ça, qui est un type fondamental (pour pas dire primitif), car après tout, "string" n'est qu'une spécialisation de "basic_string", en l'occurrence "basic_string<char>", n'est-ce pas ?
    On peut bien parler de type primitif, en effet. Mais, si tu prends ce chemin là, autant décider de coder directement en assembleur, voir, pourquoi pas, en binaire

    Les char *, comme tous les pointeurs, sont soumis à un tas de problèmes relatifs à la gestion manuelle de la mémoire, dont les deux principaux risques sont les fuites mémoire d'une part et leur effet miroir : les double tentative de libération de celle-ci.

    De plus, la gestion d'une chaine de caractères basée sur le char * est soumise à des problèmes spécifiques impliquant de s'assurer d'une copie en profondeur des données, mise en place par l'utilisation de fonctions spécifiques.

    Ce sont autant de problèmes dont sont exemptes les std::string, qui permettent (à l'instar des différents types de collections) d'avoir une courbe d'apprentissage beaucoup plus facile, en autorisant le fait de ne s'intéresser aux pointeurs que quand il deviennent réellement indispensables, c'est à dire, au moment où l'on commence à aborder le polymorphisme.

    Je ne dis pas qu'il ne faut pas parler des char * qui ont leur utilité dans certaines circonstances bien particulière! Je dis juste que leur problématique -- comme toute la problématique liée à l'utilisation des pointeurs de manière générale -- peut être abordée beaucoup plus tard, lorsque le récipiendaire a déjà acquit de bien meilleures bases, a contrario du C pour lequel la gestion dynamique de la mémoire est un prérequis pour ainsi dire indispensable .
    Ensuite, pourquoi j'ai pointé cette ressource ? Tout d'abord parce qu'elle montre que "cin" a des fonctions membres comme "getline" et qu'ensuite, elle pointe également vers la fonction "surchargée et autonome" "getline", et que toute personne s'intéressant un tant soit peu au sujet, ne manquera pas. Enfin, y'a pas qu'une seul manière de faire. On peut très bien laisser l'acquisition sous forme de chaine de caractères, et faire une conversion par la suite, tout au moins si on le souhaite ou si c'est requis, et sans oublier la gestion des erreurs bien entendu.
    Mais, alors, pourquoi en pas directement pointer vers la ressource la plus adaptée à la situation, à savoir std::getline
    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

  9. #9
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    J'ai pas fait un cours à ce que je sache, non ? Je me suis contenté de donner un lien. Si un débutant devait retenir quelque chose de ce lien, c'est bien www.cplusplus.com. Si en plus cette personne est motivée, rien ne l'empêche de creuser et de poser d'autres questions. Ensuite, j'ai pas le monopole des réponses. Chacun peut contribuer ou compléter sans pour autant faire dans le dénigrement. C'est tout.

    Pour la parenthèse, pour ce qui est de la meilleure manière d'aborder le C++, je sais pertinemment que certains pour donner un sens logique aux choses voudront savoir ce qui se passe sous le capot très tôt, ça ça dépendra de la sensibilité de chacun et c'est un autre débat.

  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par minnesota Voir le message
    J'ai pas fait un cours à ce que je sache, non ? Je me suis contenté de donner un lien. Si un débutant devait retenir quelque chose de ce lien, c'est bien www.cplusplus.com. Si en plus cette personne est motivée, rien ne l'empêche de creuser et de poser d'autres questions. Ensuite, j'ai pas le monopole des réponses. Chacun peut contribuer ou compléter sans pour autant faire dans le dénigrement. C'est tout.
    Où ai-je dénigré quoi que ce soit

    Je t'ai gentiment repris en "complétant" ta réponse, comme tu le dis si bien et en précisant certains points qui méritaient de l'être
    Si en plus cette personne est motivée, rien ne l'empêche de creuser et de poser d'autres questions.
    C'est une manière de voir les choses. Une autre manière de voir les choses -- beaucoup plus en rapport avec le mode de fonctionnement d'un forum -- est de se dire que les gens qui posent une question aiment avant tout obtenir une réponse correcte, quitte à avoir quelques explications en sus. Comme Gala02 utilise déjà la classe std::string il semble "logique" de lui pointer la ressource qui permet d'utiliser getline avec la classe string.

    Elle n'était peut être pas adaptée à la citation, mais si tu rapporte la remarque que je t'ai faite concernant l'assembleur au dernier paragraphe de ton intervention précédante, tu ne pourras que convenir avec moi qu'elle était pleinement justifiée, non
    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

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 9
    Points
    9
    Par défaut
    Woow merci de vos réponses et vous battez pas hein ? ^^

  12. #12
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Où ai-je dénigré quoi que ce soit
    Pardons koala01 de ce malentendu
    c'est pas ton message que je visais et encore moins toi, tu le sais bien

    Non, c'est le message d'avant là, celui de Ehonn où il insulte mon char.
    Je suis tout à fait d'accord avec lui sur le fond, mais j'ai pas apprécié la forme, je l'ai ressenti comme ça parce que j'étais peut être déjà exaspéré par autre chose avant, ça arrive.

    Et puis bien sûr, je suis 100% d'accord avec ce que tu dis koala01. Et tu penses bien que je me aussi demandé, mais pourquoi j'ai pas mis l'autre lien, ou les deux. Dans tous les cas, mon réflexe sur le moment était de donner un point d'entré histoire de dépanner le temps que quelqu'un apporte une réponse plus complète. Dans les faits, ça a pris une seconde, balayage, y'a tout ce qui faut, op. En tout cas, mon intention n'était certainement pas d'emmerder le monde ou d'induire en erreur, loin de là. Tu le sais. Tu le sais hein ?

    Je tiens néanmoins à m'excuser pour mon dernier message qui était plus de la mauvaise humeur, genre "arrêter de me casser les pieds", que de l'argumentation. Maintenant vous pouvez

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

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Désolé que tu l'aies mal pris :s
    C'était pas du tout le but

Discussions similaires

  1. enregistrement d'un fichier dll en tout début de programme
    Par rudyhadoux dans le forum C++Builder
    Réponses: 0
    Dernier message: 11/09/2007, 12h02
  2. Réponses: 6
    Dernier message: 27/12/2006, 21h53
  3. [2.0] : Ajouter un item en tout début d'une DropDownList
    Par stephane.net dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/11/2006, 16h50
  4. [Kylix] Tout débuts sous Kylix
    Par hlmhv dans le forum EDI
    Réponses: 5
    Dernier message: 11/09/2005, 09h58
  5. Toutes les bonnes choses ont un début ...
    Par Bols2000 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/08/2002, 17h01

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