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é