le programme ci-dessous permet de rechercher les occurences d'un mot et de les afficher à l'écran.
exemple: en tapant le prénom philippe voici ce qui apparaît à l'écran :
introduisez un mot ou des mots (maximum 15 lettres)
philippe
affichage contenu tableau via fonction surcharge <<
0x0012FF70
affichage contenu tableau via fonction affichage classique
philippe
voici le resultat des occurences
e--> 1
h--> 1
i--> 2
l--> 1
p--> 3
verification tableau t2
philippe
Press any key to continue
Dans l'élaboration du programme j'ai eu recours à quelques artifices qui ne me semblent vraiment pas adéquats lorsque on essaie de faire de la programmation dans les règles de l'art.
1/ J'utilise la fonction cin.getline(tableau_intermediaire,LONGUEUR ,'\n' ) dans le corps du programme qui me permet d'encoder le mot caractère par caractère dans le tableau tableau_intermediaire et d'en sortir lorsque j'appuie sur la touche RETURN. Ensuite je réencode le mot via une fonction membre dans le tableau tableau.
Donc je suis obligé de passer en paramètre de cin.getline l'argument tableau_intermediaire alors que je voudrais ne pas passer par le tableau_intermediaire mais directement par le constructeur par défaut ou par une fonction membre public de la class Tableau.
Comment pourrais-je procéder pour remédier à ce problème ?
2/J'ai aussi un problème avec l'opérateur de surcharge << qui m'affiche un résultat erroné --> 0x0012FF70.
Comment pourrais-je procéder pour remédier à ce problème ?
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include<string.h>
//using namespace std;
const int LONGUEUR = 15;
const int ALPHA = 26;
class Tableau{
private:
int max;
int nbEl;
char* tableau;
int tableau_occurence[ALPHA];
public:
//constructeur
Tableau(int n){
max = n;
nbEl = 0;
tableau = new char[n];
};
//déstructeur
~Tableau(){
delete [] tableau;
};
//constructeur de copie
Tableau(const Tableau & s){
max = s.max;
nbEl = s.nbEl;
tableau = new char[max];
for(int i = 0; i < nbEl; i++){
tableau[i] = s.tableau[i];
};
};
//nombre d'élements du mot encodé
void initialisation_nbEl(int l_p){
nbEl = l_p;
};
//encodage caractère du tableau intermédiaire (corps du programme) dans le tableau class private
void encodage_mot_tableau(int i, char l){
tableau[i] = l;
};
//affichage des caractères du tableau dans le corps du programme via la fonction opérateur de surcharge <<
friend ostream& operator << (ostream& o, const Tableau* t){
for(int i = 0; i < t->nbEl; i++){
return o << t->tableau[i];
};
};
//affichage des caractères du tableau dans le corps du programme via la fonction classique affichage
void affichage_tableau(){
for(int i = 0; i < nbEl; i++){
cout << tableau[i];
};
};
//26 cases du tableau tableau_occurence initialisées à 0
void initialisation_tableau_occurence_a_0(){
for(int i = 0; i < ALPHA; i++){
tableau_occurence[i] = 0;
};
};
//recherche des occurences + incrémentation dans le tableau_occurence
void recherche_des_occurences_tableau(){
for(int i = 0; i < nbEl; i++){
if(('a' <= tableau[i]) && (tableau[i] <= 'z')){
tableau_occurence[tableau[i] - 'a']++;
};
};
};
//affichage des occurences dans le tableau occurence
void affichage_occurences_tableau(){
for(int i = 0; i < ALPHA; i++){
if(tableau_occurence[i] != 0){
cout << (char) (i + 'a') << "--> " << tableau_occurence[i] << endl;
};
};
};
};
int main(){
Tableau* t1 = new Tableau(LONGUEUR);
char tableau_intermediaire[LONGUEUR];
char lettre;
int longueur_phrase = 0;
cout << "introduisez un mot ou des mots (maximum 15 lettres)" << endl;
cin.getline(tableau_intermediaire, LONGUEUR, '\n');
longueur_phrase = strlen(tableau_intermediaire);
t1->initialisation_nbEl(longueur_phrase);
for(int i = 0; i < longueur_phrase; i++){
lettre = tableau_intermediaire[i];
t1->encodage_mot_tableau(i, lettre);
};
cout << endl;
cout << "affichage contenu tableau via fonction surcharge << " << endl;
cout << &t1 << endl;
cout << endl;
cout << endl;
cout << "affichage contenu tableau via fonction affichage classique" << endl;
t1->affichage_tableau();
cout << endl;
cout << endl;
t1->initialisation_tableau_occurence_a_0();
t1->recherche_des_occurences_tableau();
cout << "voici le resultat des occurences" << endl;
t1->affichage_occurences_tableau();
cout << endl;
Tableau* t2;
t2 = t1;
cout << "verification tableau t2" << endl;
t2->affichage_tableau();
cout << endl;
return 0;
}
Partager