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

Discussion: La Fonction find()

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2018
    Messages : 18
    Points : 9
    Points
    9

    Par défaut La Fonction find()

    Bonjour,

    Je débute dans le code C++ et je dois faire un exercice qui consiste à ce que quelqu'un entre un mot contenant au minimum 10 caractère. Ensuite, on doit faire la recherche d'où se trouve la lettre du mot qu'on souhaite trouvée.
    Le programme doit affiché la lettre (même si cette lettre est présente plus qu'une fois dans le mot) du mot en majuscule et indiqué sa ou ses positions dans le mot.
    Exemple:
    Entrer un mot de plus de 10 caractères: recherches
    lettre recherchée : e
    Résultat: rEchErchEs
    Apparait a la position: 2, 5, 9

    Dans le code que j'ai écris ci-dessous, quand je veux que le code affiche la lettre recherchée en majuscule, au moment où je fais run sur le code, j'ai ce message d'erreur qui m'apparait: Use of undeclared identifier 'str'.
    Mais est-ce que je ne l'ai pas identifier lorsque j'écris: string mot et dans #include <string.h>?


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #include <iostream>
    #include <string.h>
     
    using namespace std;
     
    int main ()
    {
        string mot;
        char letter;
        cout << "Entrer un mot de plus de 10 caracteres :\n";
        cin >> mot;
        cout << "Lettre a rechercher\n";
        cin >> letter;
     
        int str_len = str.size();
        int pos_array[str_len];
        int pos = 0, count = 0;
     
        memset(pos_array, 0, str_len);
     
        for(pos = 0; pos < str_len; ++pos) {
            if (str [pos] == letter) {
                pos_array[pos] = 1;
                str [pos] += ('A' - 'a');
                count++;
     
                cout << str << ' ' << pos + 1 << endl;
            }
        }
     
        for (int i = 0; i < mot.length(); i++)
        {
            if (mot[i] == letter)
            {
                cout << letter << " est la " << i + 1 << "e lettre du mot " << mot << endl;
            }
        }
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 809
    Points : 4 209
    Points
    4 209

    Par défaut

    Il ne faut pas confondre les #include <string.h> et #include <string>. Le premier ne doit jamais être utilisé en C++.

    Et quel rapport y a-t-il entre string mot; et str? D'où sort ce str? C'est d'ailleurs ce que dit le compilateur. Peut-être voulais tu écrire string str;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2018
    Messages : 18
    Points : 9
    Points
    9

    Par défaut

    J'ai fait la modification, par contre il ne m'affiche pas ce résultat que je souhaite aussi obtenir:
    Résultat: rEchErchEs

    Et pour être franc, je suis un peu perdu. Est-ce que je devrais remplacer str_len par str_mot lorsque j'écris " int str_len = str.size();" ?


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main ()
    {
        string str;
        string mot;
        char letter;
        cout << "Entrer un mot de plus de 10 caracteres :\n";
        cin >> mot;
        cout << "Lettre a rechercher\n";
        cin >> letter;
     
        int str_len = str.size();
        int pos_array[str_len];
        int pos = 0, count = 0;
     
        memset(pos_array, 0, str_len);
     
        for(pos = 0; pos < str_len; ++pos) {
            if (str [pos] == letter) {
                pos_array[pos] = 1;
                str [pos] += ('A' - 'a');
                count++;
     
                cout << str << ' ' << pos + 1 << endl;
            }
        }
     
        for (int i = 0; i < mot.length(); i++)
        {
            if (mot[i] == letter)
            {
                cout << letter << " est la " << i + 1 << "e lettre du mot " << mot << endl;
            }
        }
    }

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 809
    Points : 4 209
    Points
    4 209

    Par défaut

    Quel rapport y a-t-il entre string mot; et string str;?
    Maintenant tu as définis 2 variables, et tu supposes qu'il existe une transmission de pensée implicite entre les 2?
    Quand tu écris int str_len = str.size(); tu mets dans str_len la longueur de la chaîne str qui est vide car on n'a rien mis dedans donc str_len vaut 0 quel que soit le nom que tu lui donnes.
    As tu compris ce qu'est une variable?

    Et ta ligne 18 est invalide en C++ même si gcc la supporte, il faut utiliser std::vector<int> pas un tableau VLA.
    Et on n'utilise pas memset en C++, c'est une fonction C.
    Et finalement tu n'utilises jamais ce que tu as mis dans pos_array[].

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 480
    Points : 23 818
    Points
    23 818

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     int str_len = str.size();
        int pos_array[str_len];
    Est un VLA seulement permis dans certaines normes C et pas du tout en C++.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2018
    Messages : 18
    Points : 9
    Points
    9

    Par défaut

    Merci les boys, j'ai allumé et compris mes erreurs, mon code fonctionne!

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

Discussions similaires

  1. Utilisation de la fonction find
    Par ylabarre dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 29/08/2007, 17h02
  2. [C++ .NET] Comment utiliser fonction Find ?
    Par thecrax dans le forum Framework .NET
    Réponses: 3
    Dernier message: 17/08/2006, 10h02
  3. [VBA-E]Problème avec la fonction Find
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2006, 19h43
  4. [VBA-E]Fonction .find
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2006, 12h03
  5. [VBA-E] Fonction "FIND"
    Par cinc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2005, 12h16

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