begin process at 2012 05 27 18:04:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > RECHERCHE DU CARACTERE AVEC LE PLUS D'OCCURENCES DANS UNE CHAINE [VERSION 2, TOUT COMPILATEUR]

RECHERCHE DU CARACTERE AVEC LE PLUS D'OCCURENCES DANS UNE CHAINE [VERSION 2, TOUT COMPILATEUR]


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Débutant Date de création :24/01/2002 Date de mise à jour :14/02/2002 19:43:04 Vu :4 035

Auteur : guguy

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Ce programme cherche via la fonction nbrocc le caractere ayant le plus d'occurence dans une chaine (de type string), cette même fonction regarde ensuite s'il y a des ex-aequo et enfin retourne une structure "int-int-char" à l'apellant.  

Source

  • #include <iostream>
  • #include <string>
  • using namespace std;
  • struct occurence
  • {
  • int nbrocc;
  • int idem;
  • char lettre;
  • };
  • occurence nbrocc(string s) {
  • int alpha[255]={0}; // Tableau pour comptabiliser les caracteres
  • for(int i=0;i<(int)s.size();i++) // Pour chaque caractere de la string
  • {
  • for(int b=0;b<255;b++) // Pour chaque caractere ANSI
  • {
  • if(s[i]==(char)32) // Si le caractere est un espace on le neutralise
  • s[i]=0;
  • else if(s[i]==(char)b) // Sinon on l'index
  • alpha[b]++;
  • }
  • }
  • occurence occ={0};
  • for(int i=0;i<255;i++)
  • {
  • if(alpha[i]>occ.nbrocc) // On recherche le caractere avec le plus d'occurences
  • {
  • occ.nbrocc=alpha[i];
  • occ.lettre=(char)i;
  • }
  • }
  • for(int i=0;i<255;i++) // On regarde s'il y a des ex-aequo
  • {
  • if((alpha[i]==occ.nbrocc)&&(i!=occ.lettre))
  • occ.idem++;
  • }
  • return(occ);
  • }
  • int main()
  • {
  • string s1;
  • cout << "Entrez une chaine :\n";
  • getline(cin,s1);
  • occurence occ=nbrocc(s1); // On initialise une structure avec nbrocc
  • if(occ.idem!=0) // Si il y a des ex-aequo
  • cout << "Plusieurs caracteres sont ex-aequo sur le plus gros nombre d'occurences (" << occ.nbrocc << "), nottamment " << "\"" << occ.lettre << "\"\n";
  • else
  • cout << "Le caractere ayant le plus d'occurence (" << occ.nbrocc << ") est " << "\"" << occ.lettre << "\"\n";
  • }
#include <iostream>
#include <string>

using namespace std;

struct occurence
{
int nbrocc;
int idem;
char lettre;
};

occurence nbrocc(string s) {
  int alpha[255]={0};            // Tableau pour comptabiliser les caracteres 
  for(int i=0;i<(int)s.size();i++)  // Pour chaque caractere de la string  
  {
    for(int b=0;b<255;b++) // Pour chaque caractere ANSI
  {
    if(s[i]==(char)32) // Si le caractere est un espace on le neutralise
s[i]=0;
    else if(s[i]==(char)b) // Sinon on l'index
alpha[b]++;
  }  
}
occurence occ={0};
for(int i=0;i<255;i++)
  {
if(alpha[i]>occ.nbrocc) // On recherche le caractere avec le plus d'occurences
  {
occ.nbrocc=alpha[i]; 
occ.lettre=(char)i;  
}
}
for(int i=0;i<255;i++) // On regarde s'il y a des ex-aequo
  {
    if((alpha[i]==occ.nbrocc)&&(i!=occ.lettre)) 
      occ.idem++;
  }
return(occ);
}

int main()
{
string s1;
cout << "Entrez une chaine :\n";
getline(cin,s1);
occurence occ=nbrocc(s1); // On initialise une structure avec nbrocc
if(occ.idem!=0)  // Si il y a des ex-aequo
  cout << "Plusieurs caracteres sont ex-aequo sur le plus gros nombre d'occurences (" << occ.nbrocc << "), nottamment " << "\"" << occ.lettre << "\"\n";
else 
  cout << "Le caractere ayant le plus d'occurence (" << occ.nbrocc << ") est " << "\"" << occ.lettre << "\"\n";
}

 Conclusion

Vous pouvez très facilement modifier cette source pour ne prendre en compte que certains caracteres (par exemple uniquement les lettres de l'alphabet).  


 Sources du même auteur

CALCULE DU NOMBRE DE DIAGONALES D'UN POLYGONE EN FONCTION DU...
NOMBRE DE LIGNE DANS UN FICHIER [VERSION C++]
Source avec Zip PROGRAMME DE CALCULE DE LA DISTANCE ENTRE DEUX POINTS SUR UN...
TUTORIAL SUR L'UTILISATION DU TYPE VA_LIST
MASTERMIND NUMERIQUE [VERSION 2][TOUT COMPILATEUR]

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales