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 :

Minuscules et recherche de mot


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut Minuscules et recherche de mot
    Bonjour,
    - Existe t'il une commande pour convertir une chaine contenant majuscule et mininuscule directement ?
    il AiME LeS CHIens -> il aime les chiens
    Ou alors une commande qui permet une comparaison sans prendre en compte majuscule et minuscule (si c'est pas le cas par defaut...)

    - Comment faire pour rechercher dans un fichier la ligne qui contient le plus de fois une phrase ?

    le fichier contient 2 lignes :
    toto est malin
    toto est tres malin

    on veut afficher la phrase la plus proche de "il est tres malin" car on trouve 3 mots au lieu de 2 dans l'autre.

    Solution possible => on peut faire une recherche avec un compteur et afficher le plus grand... Mais je sais toujours pas comment rechercher un mot dans une phrase... lol

  2. #2
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par Spike21
    Bonjour,
    - Existe t'il une commande pour convertir une chaine contenant majuscule et mininuscule directement ?
    si cela se fait par le biais de la fonction cctype et isalpha et par tolower ( pour l'inverse :passer des minuscules aux majuscules il faut utiliser toupper
    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
     
    // 
    //converti majuscule en miniscule
    //
    #include <iostream>
    #include <cctype>
     
    using namespace std;
     
    int main() 
    {
            char entree;
     
            while(cin.get(entree))
            {
                    if(isalpha(entree)) cout << (char)tolower(entree);
                    else cout << entree;
            }
            return (0);
    }
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    Oué c'est une boucle, ya pas d'autre moyen a s'ke je comprend...

    Si je comprend

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(cin.get(entree)) // lis lettre par lettre le mot
            {
                    if(isalpha(entree)) cout << (char)tolower(entree); // convertis si alphanumérique
                    else cout << entree; // sinon laisse le charactère comme il est
            }

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    - Existe t'il une commande pour convertir une chaine contenant majuscule et mininuscule directement ?
    il AiME LeS CHIens -> il aime les chiens
    Ou alors une commande qui permet une comparaison sans prendre en compte majuscule et minuscule (si c'est pas le cas par defaut...)
    Il y a dans la FAQ C++ un code qui permet de convertir une chaîne en majuscule ou minuscule. Sans entrer dans les détails le code donné est incomplet voire incorrect, mais pour une utilisation limitée ça peut parfaitement faire l'affaire.

    Pour un moyen de faire des comparaisons sans tenir compte de la casse, tu as une solution sympa qui est de définir un type de chaînes de caractères à partir de std::basic_string et d'un char_traits perso.
    Plus d'infos ici : http://www.gotw.ca/gotw/029.htm

    Mais je sais toujours pas comment rechercher un mot dans une phrase... lol
    Regarde la doc de la classe std::string. La FAQ C++ est un bon point de départ.

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    si c'est mon code qui est incorrect , j'aimerai savoir ou sont les erreures.
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par smoove
    si c'est mon code qui est incorrect , j'aimerai savoir ou sont les erreures.
    Je parlais de celui de la FAQ

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    Le problème c'est que ma chaine a deja un type...
    J'en ai deja chier pour faire des comparaisons...
    Je vais pas tout re transformer...

    Je prend en note vos proposition... je verai bien par la suite !

  8. #8
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par Laurent Gomila
    Je parlais de celui de la FAQ
    Excuse moi j'avais mal lu.
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    ... si t'utilisais Qt ca serait vraiment simple

    QString s("ma chaine de CarAcTeres");
    QString lower_s = s.toLower();
    ou si tu veux boucler avec "indexOf" avec case insensitive

    int QString::indexOf ( QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

    voila, bon je ne reponds peut-etre pas a ta question,
    je suis pour Qt plus que pour Boost,
    ... j'aime bien la philosophie Qt

    A+

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    ... heu j'avais aussi confondu avec une recherche de mot,
    la comparaison est encore plus facile

    int QString::compare ( const QString & other, Qt::CaseSensitivity cs ) const



    Voila A+

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    et pour compter le nombre de mots

    int QString::count ( const QRegExp & rx ) const

    en definissant l'expression pour un mot.

    C'est quand meme bien foutu Qt non ?

    A+

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    Houlà... je comprend rien du tout !

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    heu ...
    Qu'est ce que tu n'as pas compris ?
    Qt ?

    c'est une librairie multi-plateforme, un vraiment bon framework
    qui permet de faire du GUI ainsi que beaucoup de chose de base
    (QString QBuffer QFile .... )

    A+

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    Ben je comprend pas le format de la commande et comment la place dans mon code...

    En fait j'ai ça

    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
    28
    29
    30
    std::ifstream fichier( "dials.txt" );
            int affichage = 0;
            int phrase = 0;
            if ( fichier )
            {
                    std::string ligne;
                    while ( std::getline( fichier, ligne ))
                    {
                            if (affichage == 1)
                            {
                                    Form1->DemoBot.BotCommand.SendMsg(lpBuddyAccount, ligne.c_str(), "");
                                    affichage = 0;
                                    break;
                            }
                            if (str == ligne.c_str())
                            {
                                    affichage = 1;
                                    phrase = 1;
                            }
                    }
                    if (phrase == 0)
                    {
                            std::ofstream file( "dials.txt", std::ios_base::app );
                            file << (lpMsg+String("\n")).c_str();
                    }
                    if (String(ligne.c_str()) == "")
                    {
                            Form1->DemoBot.BotCommand.SendMsg(lpBuddyAccount, "Qu'aurais-je du répondre ?", "");
                    }
            }
    dials.txt => fichier texte avec 1 mot ou phrase par ligne
    Form1->DemoBot.BotCommand.SendMsg(lpBuddyAccount, ligne.c_str(), ""); => affichage a l'ecran formalisé pour mon prog
    lpMsg ou str : variable contenant une phrase ou un mot

    En gros je recoit lpMsg/str, je le compare a ce qu'il y a dans le fichier texte et repond la ligne suivante ou si il y a rien a répondre (fin de fichier) il demande ce qu'il aurait du répondre puis ecris la phrase recue.

    Donc, je veux convertir tout pour pas avoir de pb de majuscule entre 2 phrases et pas comparer la phrase complete mais le nombre de mot trouvé au max...

    Pour info, c'est une IA que je fais...

    dials.txt est comme suit :

    bonjour
    salut
    ça va ?

    Mon code actuel permet pas de différencier "Bonjour" et "bonjour" ou "ca va ?" et "ça va?". Donc c'est un peut la me*** ! lol

    Si vous pouvez me dire ou je dois placer vos commande...
    Car deja mon code je m'y perd...

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    moi perso je trouve qu'il y a une difference entre ecrire le programme pour les autres personnes et lui aider a trouver une solution / piste a creuser ponctuellement pour l'aider.

    J'aime bien la deuxieme, c'est interessant et enrichissant,
    par contre la premiere .... Une raison bien simple c'est que ca prend vraiment du temps de reprendre, corriger et tester non ? et le temps est precieux pour la majorité d'entre nous....

    Je pense que tu as tous les elements en main pour corriger ton probleme, qui est vraiment interessant en plus a travailler....

    A+

  16. #16
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par epsilon68
    J'aime bien la deuxieme, c'est interessant et enrichissant,
    par contre la premiere ....
    Et pourtant on est tous passés par là lors de nos débuts..........
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    c'est une question de point de vue...
    je n'ai jamais été dans ce cas la.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    J'me suis demer pour trouver une personne sympathique pour m'aider a me coder mon truc...
    Tout le monde parle de logiciel gratuit mais les 3/4 des gens veulent aider que quand ça les arrangent... Ou va t'on ?
    Si mon projet veut pas etre améliorer pas des ames charitables... ben il restera au placard...

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par smoove
    Et pourtant on est tous passés par là lors de nos débuts..........
    C'est pas mes debuts et c'est pas en me disant prend ça et ça et debroukille toi que j'vais vouloir m'améliorer...
    On fait pas un gateau juste avec des ingrédiens posé sur une table !

  20. #20
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    alors mets le source complet qui compile avec vc++ ou gcc avec exactement ce que tu veux qu'on modifie dedans ...

    moi je pense que ce n'est pas en te faisant ton truc que tu vas progresser, c'est pourtant progresser que tu veux non ?

    Je suis partant pour comprendre tout de zero. ( a eviter les fragments de code sauf pour illustration ). Mets en download ton premier source, gcc ca sera le mieux mais vc++ me convient aussi au pire. GCC est mieux pour moi sur mon Mac.

    Si quelqu'un ne veut pas t'ecrire ton code, peut-etre justement c'est le meilleur moyen pour t'aider non ?

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Recherche sur mots de 3 lettres
    Par mamizo dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/02/2005, 14h59
  2. [TP]Recherche de mots dans un Doc.
    Par Loceka dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 04/10/2004, 19h04
  3. Recherche des mots contenant ...
    Par Asdorve dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/06/2004, 10h23
  4. Réponses: 10
    Dernier message: 22/05/2004, 13h51
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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