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 :

comment ecrire une fonction qui me rentre une string?


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut comment ecrire une fonction qui me rentre une string?
    bonjour!

    mon probleme est pour le programme suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int array[10];
    cout<<"entrez un mot";
    for(int i=0;    ????    ;i++)
    {
       cin>>array[i];
     
    }
    mon probleme est kel condition mettre dans le for puiske je ne sais pas combien de caractere va t il rentre! je sais seulement kil frapera enter une fois avoir fini!!!

    kel condition?


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Si ce que tu veux faire c'est saisir un mot, voilà le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    using namespace std;
     
    int main() {
    string Mot;
    cout << "Saisissez un mot" << endl;
    cin >> Mot;
     
    cin.ignore;
    }

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Pense à vérifier la saisie aussi.
    http://c.developpez.com/faq/cpp/?pag...#SL_cin_verify

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    je sais ke y a plein de fonction par default ki le font mais je veux essayer de comprendre comment cette fonction est ecrite? je n arrive pas a voir kel condition mettre pour arreter de boucler une fois ke l utilisateur a taper entre?
    entre existe dans le code ascii?

  5. #5
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    D'accord, je n'avais pas bien saisi.

    Le code d"Enter" c'est 0x13 (Hexadécimal). Tu peux donc écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int array[10]; 
    cout<<"entrez un mot"; 
    for(int i=0; ((unsigned int) array[i]) != 0x13 ;i++) 
    { 
       cin>>array[i]; 
     
    }
    Il faut aussi rajouter le contrôle de la saisi comme nous te l'avons indiqué (au cas où l'utilisateur saisie n'importe quoi). Note, le cast en unsigned int pour vérifier l'égalité avec 0x13 est obligatoire. En effet, les deux opérandes ne sont pas du même type (un signé et un non signé).

    Enfin, pour tester, au cas où, je te conseille d'ajouter un compteur à la boucle afin d'éviter une boucle infini(je n'ai pas eu le temps de tester mon code).

  6. #6
    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
    Euh... Tu ne nous parles pas de \r, là, si ?

    Car \r, c'est 13 décimal (0x0D) (Et \n, c'est 10 décimal (0x0A))
    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.

  7. #7
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Ha, il y en a un qui suit

    Voilà, c'est bien '\r':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int array[10]; 
    cout<<"entrez un mot"; 
    for(int i=0;array[i] != '\r';i++) 
    { 
       cin>>array[i]; 
     
    }
    Dès fois le matin, avant le deuxième café, le cerveau c'est pas ça

  8. #8
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Je ne veux pas faire le rabat-joie, mais est-ce que vous avez essaye ce que vous proposez?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Non, aujourd’hui j'ai donné du code sans le tester.

    D'ailleurs, heureusement que demain c'est les vacances parce que là! Pompon.

    Tiens d'ailleurs, il n'y a pas besoin de le tester pour comprendre qu'il ne marche pas.

    Désolé de l'erreur.

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    donc, je conclu! pour l instant on n a pas de reponsse!!
    le code propode ne marche pas!

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    regarde le code de la FAQ, ajoute un compteur a chaque saisie et arrête la boucle quand le compteur atteind une certaine valeur...

  12. #12
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Je ne sais pas tres bien ce que tu veux.

    Ton message demande d'entrer un mot. Quelle est ta definition de mot? Est-ce qu'il faut sauter les blancs qui seraient eventuellement entre avant? Est-ce que ce doit etre suivant la valeur du flag skipws?

    Si tu entres un mot, mais tu le stocke dans un (tres petit!) tableau d'entiers? Pourquoi? Que t'attends-tu a avoir comme entiers dans ton tableau si je rentre "anticonstitutionnellement"?

    J'ai l'impression que tu desires faire cette entree sans utiliser ce qui est deja disponible (operator>> pour les std::string le fait pour une certaine definition de mot). Mais tu n'utilises pas ce qu'il faudrait (les membres get() et peek() de std::istream).

    Il y a bien trop d'imprecisions pour commencer a penser a proposer du code.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    je m explique!
    je declare un tableau array de 10 places
    ensuite je demande a l utilisateur de rentrer un mot que je vettre caractere par caractere dans le tableau en utilisant une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cout<<"Entrez un mot!";
    for(int i =0;i<10;i++)
    {
    cin>>array[i];
    }
    le probleme est que la la boucle va toujours boucler 10 fois alors que je voudrais qu elle ne boucle que le nombre de lettre que l utilisateur a entrer.
    donc faudrai que j arrete de boucler une fois que l utilisateur a taper sur enter mais comment ecrire cette condition puisque j ai l impression que le enter n a pas ete pris comme un caractere!

  14. #14
    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
    Qu'espères-tu avoir en mettant un caractère dans un tableau d'int ?
    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.

  15. #15
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par d-a-v-e
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int array[10];
    cout<<"Entrez un mot!";
    for(int i =0;i<10;i++)
    {
    cin>>array[i];
    }
    Merci j'ai vu ton code mais comme il fait quelque chose de different de ce que tu decris et de ce qui est suggere par le fait que tu demandes "entrez un mot", mes questions restent valables.

    Est-ce que tu as regarde ce que faisaient les membres peek() et get() de istream?

    Que fait quand on sait array[i] est un int?

    Que se passe-t'il si on entre autre chose qu'un nombre? Que se passe-t'il pour les entrees suivantes?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    desole! jme suis trompe! le tableau est
    et je veux que apres que l utilisateur est taper son mot est taper enter, que la boucle prenne caractere par caractere et qu elle les mette dans le tableau!

Discussions similaires

  1. [XL-2007] Cherche une fonction qui convertit directement une date
    Par BARMAKI dans le forum Excel
    Réponses: 7
    Dernier message: 08/04/2013, 13h19
  2. Réponses: 1
    Dernier message: 09/02/2009, 01h36
  3. Réponses: 3
    Dernier message: 12/12/2008, 10h47
  4. Réponses: 2
    Dernier message: 06/03/2008, 21h20
  5. appel d'une fonction qui est dans une autre page
    Par guppy33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/08/2006, 12h05

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