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 :

Trouver le nbre de lettre dans une chaine


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    martin199
    Invité(e)
    Par défaut Trouver le nbre de lettre dans une chaine
    bonsoir à tous

    voila, j'ai 1 Edit1 ou j'ecris une phrase

    et j'ai un bouton qui execute le programme et j'ai un deuxième Edit ou normalement je recois le nombre de "e" dans cette phrase.

    Mais je n'y arrive pas et je ne sais plus quoi faire. quelqu'un aurait t'il une idée...

    voila mon 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
    23
    24
    25
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    char* chaine;
    int i=0;
    int n=0,nb ;
     chaine=(char*) malloc (80);
    
    
    
     strcpy(  Edit1->Text, chaine);
    
    
     nb=strlen(chaine);
    for (i=0;i<nb;i++)
    {
    if ( chaine[i]=='e')
    	{
    	n=n+1;
    	}
    }
    
    Edit2->Text ="Le nombre de e est de"+n;
    }
    voila mes 2 erreurs:
    [C++ Erreur] Unit1.cpp(30): E2034 Impossible de convertir 'AnsiString' en 'char *'
    [C++ Erreur] Unit1.cpp(30): E2342 Mauvaise correspondance de type dans le paramètre '__dest' ('char *' désiré, 'AnsiString' obtenu)

  2. #2
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Hum, je connais pas trop les AnsiString mais strcpy, c'est au moins dans l'autre sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcpy( chaine, Edit1->Text.c_str() );
    pour compter sinon il y a std::count.

    Et je serai étonné que "Le nombre ... de" + n; compile

    Sinon en 1 recherche sur google avec AnsiString
    http://c.developpez.com/faq/bcb/?pag...es#chainescstr

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Hylvenir
    Et je serai étonné que "Le nombre ... de" + n; compile
    C'est simplement de l'arithmétique de pointeur. Ça compile, mais je doute que ça fasse ce qu'il veut.

  4. #4
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Ah oui.. décidément je perds mes réflexes...

    Bon, pour rire (sans compilateur et sans connaitre), tu peux
    essayer un truc du genre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Edit2->Text = "Le nombre de e est de "
               + IntToStr( std::count( Edit1->Text.c_str(),
                                                Edit1->Text.Length(), 'e' ) );
    }

  5. #5
    martin199
    Invité(e)
    Par défaut
    le compil me dit

    [C++ Erreur] Unit1.cpp(23): E2316 'count' n'est pas un membre de 'std'

  6. #6
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <algorithm>

  7. #7
    martin199
    Invité(e)
    Par défaut
    alors voila je l'ai modifie et nouvelle erreur, pas a la compilation mais quand j'appuie sur le bouton pour voir le resultat, il me dit qu'il ya une violation...

    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    char* chaine;
     
     //chaine=(char*) malloc (80);
     
     strcpy( chaine, Edit1->Text.c_str() );
     nb=strlen(chaine);
     
     
    for (i=0;i<nb;i++)
    {
    if ( chaine[i]=='e')
    	{
    	n=n+1;
    	}
    }
     
    Edit2->Text ="Le nombre de e est de"+n;
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2011, 15h08
  2. Réponses: 3
    Dernier message: 18/09/2009, 12h41
  3. [RegEx] Trouver les mots en majuscule dans une chaine
    Par Boeing dans le forum Langage
    Réponses: 2
    Dernier message: 15/10/2007, 23h44
  4. position d'une lettre dans une chaine de caractaire
    Par zidenne dans le forum Delphi
    Réponses: 3
    Dernier message: 14/08/2006, 10h18
  5. Nbre de caractères dans une chaine
    Par Thepince dans le forum Access
    Réponses: 2
    Dernier message: 10/08/2006, 14h34

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