Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1513 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  C++, Compter des caractères ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++, Compter des caractères ...

n°2106050
JenovaaH
Posté le 12-10-2011 à 19:57:40  profilanswer
 

Olla !  
Voilà, je suis en train de monter logiciel pour mon cousin, seulement, il y a un truc à faire sur lequel je bloque:  
Je voudrais qu'il écrive une phrase, et pouvoir trouver le plus grand nombre de lettres qui se suivent, genre : aaabbkzeubhjj, ça sera 3.  
Je sais comment lire un mot dans la longueur, mais je ne vois pas comment faire pour compter.
 
Voilà où j'en suis :
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5.     char cara1='0',cara2='1';
  6.     int suitemax=0, suitecurrent=0;
  7.     bool suite=false;
  8.     while(let1!='.')
  9.     {
  10.         cin>>cara1;
  11.         if(cara1==cara2&&suite==true)
  12.         {
  13.             suitecurrent=suitecurrent+1;
  14.            
  15.         }
  16.         cara2=cara1;
  17.     }
  18.     cout<<suitemax;
  19.     return 0;


 
Je ne sais absolument pas comment faire la suite.  :(

Message cité 1 fois
Message édité par JenovaaH le 12-10-2011 à 19:58:32
mood
Publicité
Posté le 12-10-2011 à 19:57:40  profilanswer
 

n°2106056
theshockwa​ve
I work at a firm named Koslow
Posté le 12-10-2011 à 20:35:37  profilanswer
 

traiter l'entrée caractère par caractère n'est que rarement une bonne pratique.
 
Tu devrais plutôt prendre une ligne complète et ensuite la traiter.
Pour résoudre ton problème, essaye de le formaliser en français, décris le processus que tu fais toi-même quand tu comptes les caractères d'une chaine, ca te donnera une idée d'une solution.


---------------
last.fm
n°2106157
olivthill
Posté le 13-10-2011 à 12:20:55  profilanswer
 

Il faudrait mettre à jour le drapeau suite.

JenovaaH a écrit :

Voilà, je suis en train de monter logiciel pour mon cousin

Ah c'est bien, ton professeur d'informatique est ton cousin ?
 

n°2106169
in_your_ph​ion
Posté le 13-10-2011 à 14:03:11  profilanswer
 

un truc du genre

 
Code :
  1. const char * p = "aerazerazerzezzezezrjjrjjrjjrjrrrir"; //bref ta chaine
  2. //tu devrais pê gérer le cas où ta chaine ne fait qu'un seul characère
  3. char * s  = p + 1;
  4. int nbMaxChar(1); // => le nombre max de caractères pareils
  5. int nbMaxCharLoc(nbMaxChar); //compteur "local" pour voir si le max "local" est plus grand ou pas que le max "global"
  6. while ( *s )
  7. {
  8.    if ( *s == *(s - 1) )  //si les caractères qui se suivent sont identiques
  9.    {
  10.          nbMaxCharLoc++;
  11.    }
  12.    else   //sinon, tu regardes le max et tu fais un raz du max local et met à jour le max global si besoin
  13.   {
  14.       if ( nbMaxCharLoc > nbMaxChar) nbMaxChar = nbMaxCharLoc;
  15.       nbMaxCharLoc = 1;
  16.   }
  17.  
  18.   s++;
  19. }
  20. if ( nbMaxChar < nbMaxCharLoc )  nbMaxChar = nbMaxCharLoc; //ta chaine est du genre "aaaaaaaaaaaaaaaaaaa" tout pareil, ou alors t'étais en fin de chaine dans une série de caractères identiques
 

enfin c'est pê faux, tu dois pouvoir faire mieux, mais dans l'esprit ça doit être ça ou dans le genre je pense, à mois que tu aies une fonction C/C++ qui te fasses ça directement LOL

 

:??:


Message édité par in_your_phion le 13-10-2011 à 14:17:22
n°2106173
in_your_ph​ion
Posté le 13-10-2011 à 14:28:56  profilanswer
 

theshockwave a écrit :

traiter l'entrée caractère par caractère n'est que rarement une bonne pratique.


 
salut, pourquoi est ce une mauvaise pratique?

n°2106182
theshockwa​ve
I work at a firm named Koslow
Posté le 13-10-2011 à 15:03:20  profilanswer
 

in_your_phion a écrit :


 
salut, pourquoi est ce une mauvaise pratique?


 
 
Ca peut être adapté, mais ton entrée n'est pas seekable en règle générale. Si tu veux un peu de flexibilité, c'est râpé. Si tu veux par exemple tester une branche d'un arbre dans l'évaluation de ton entrée, tu ne vas pas pouvoir remonter si tu t'es trompé de branche.
Ensuite, il y a des justifications côté performances aussi : non seulement un appel pour récupérer X caractères est généralement mieux que X appels, mais aussi, tu n'as pas de garantie sur la bufferisation de ton entrée (ca pourrait être dans un contexte pourri où la lecture de chaque caractère va te faire un accès disque individuel ou je ne sais quoi)
 
Bref, dans ce cas-ci, ce n'est pas spécialement gênant, c'est seulement que c'est pas une bonne habitude à prendre.


---------------
last.fm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C++, Compter des caractères ...

 

Sujets relatifs
Linux C/C++ broadcast UDP sur machine sans gatewayConvolution de 2 tableaux unidimensionnels avec FFTW C++
[Résolu] Question sur l'optimisation pour compter le nombre de ligneCompter le nbre #N/A sur plusieurs Feuilles
Dessiner graphe via un programme C++Encodage des caractères
Core dumped en CC/C# peu importe, Lister les cartes son
Compiler des sources C++ sur Windows 
Plus de sujets relatifs à : C++, Compter des caractères ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR