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 :

Relevé des occurences dans un tableau


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut Relevé des occurences dans un tableau
    voici un programme permettant de relevé le nombre d'occurences reprises dans un mot ou une phrase.
    Par exemple si je tape le prénom "philippe" le programme me retournera
    e->1
    h->1
    i->2
    l->1
    p->3

    Je souhaiterais introduire les 2 lignes suivantes dans le programme principal plutôt que dans une fonction membre mais je ne réussis pas à trouver les bons paramètres. Par contre lorsque les 2 lignes de programmation figurent dans la fonction membre int encodage_phrase(int); il n'y a aucun problème. Quelqu'un aurait-il une idée de quelle façon solutionner ce problème ? Merci d'avance.
    Les lignes posant problèmes sont en gras dans le programme.


    cin.getline(phrase, LONG, '\n');
    longueur_phrase = strlen(phrase);



    #include <iostream>
    using namespace std;
    //using namespace std;

    const int LONG = 10; // longueur maximale de la phrase lue

    class Phrase{
    private:
    char* phrase;
    int occurence[26];
    int max;
    static int compteur;
    public:
    Phrase(int);
    static int combien();
    void occu(int);
    void affichage_occurence(int);
    int encodage_phrase(int);
    void affichage_phrase(int);
    void nombre_occurence(int, int);
    void affichage_occu(int);
    };

    int Phrase::compteur = 0;

    //constructeur
    Phrase:hrase(int n){
    max = n;
    phrase = new char[n];
    compteur = compteur + 1;
    };

    //compteur actionné lors de chaque appel de phrase
    int Phrase::combien(){
    return compteur;
    };

    //initialisation du tableau "occurence" à 0
    void Phrase::occu(int n_a){
    int i = 0;
    for(i = 0; i < n_a; i++){
    occurence[i] = 0;
    };
    };

    //affichage du tableau occurence initialisé à 0
    void Phrase::affichage_occurence(int n_a){
    int i;
    for(i = 0; i < n_a; i++){
    cout << i << ". " << occurence[i] << endl;
    };
    };

    //encodage d'un mot ou d'une phrase dans le tableau "tableau"
    int Phrase::encodage_phrase(int LONG){
    int longueur_phrase = 0;
    cin.getline(phrase, LONG, '\n');
    longueur_phrase = strlen(phrase);

    cout << "longueur_phrase = " << longueur_phrase << endl;
    return longueur_phrase;
    };

    //affichage du mot ou de la phrase
    void Phrase::affichage_phrase(int l_p){
    int i;
    for(i = 0; i < l_p; i++){
    cout << phrase[i];
    };
    };

    //calcul des lettres dans le tableau "occurence"
    void Phrase::nombre_occurence(int l_p, int nbr_alph){
    int i;
    for(i = 0; i < l_p; i++){
    if(('a' <= phrase[i]) && (phrase[i] <= 'z')){
    occurence[phrase[i] - 'a']++;
    };
    };

    };

    //après le calcul des occurences voici l'affichage du tableau "occurence"
    void Phrase::affichage_occu(int nbr_alph){
    int i;
    for(i = 0; i < nbr_alph; i++){
    if(occurence[i] != 0){
    cout << (char) (i + 'a') << "--> " << occurence[i] << " occurence(s)" << endl;
    };
    };
    };


    int main ()
    {
    int nbr_alph = 26;
    int m = 10;
    int longueur_phrase;
    Phrase* ph = new Phrase(LONG);
    cout << "initialisation des occurences" << endl;
    ph->occu(nbr_alph);
    cout << "affichage des occurences" << endl;
    ph->affichage_occurence(nbr_alph);


    cout << "veuillez encodez votre phrase" << endl;
    //cin.getline(ph->phrase, LONG, '\n');
    longueur_phrase = ph->encodage_phrase(LONG);
    ph->affichage_phrase(longueur_phrase);
    cout << endl;
    ph->nombre_occurence(longueur_phrase, nbr_alph);
    cout << "voici les occurences" << endl;
    ph->affichage_occu(nbr_alph);

    return 0;
    }

    //le programme fonctionne mais n'est pas encore terminé

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    , parce que là, ton code est peu difficile à lire (d'ailleurs j'ai pas tout lu).

    Mes remarques :
    - utilises std::getline plutôt que la fonction membre getline de std::istream : voir la FAQ
    - essaie d'utiliser des std::string plutôt que des char *
    - dans ton code, j'ai l'impression que tu fais des new ou des new [] sans faire de delete ou delete[]... attention aux fuites... Pour les "new char[n]" si tu utilises un std::string, ça pourra régler en partie ce problème.
    - ta propriété membre "phrase" est private, c'est pour ça que tu ne peux pas y accéder de ton main.

Discussions similaires

  1. Non impression des couleurs dans le tableau.
    Par sebduduf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/07/2005, 16h13
  2. [langage] Compter des éléments dans un tableau
    Par helene22500 dans le forum Langage
    Réponses: 29
    Dernier message: 23/05/2005, 11h38
  3. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  4. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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