Calcul le nombre de fois que chaque lettre apparait dans une autre chaine

kev162 Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 10:22
kev162 Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 13:30
please help me

je n'arrive pa a afficher mon resultat sur 2 chiffres celui ci est 00  car je pense que je n'arrive pas a compter le nombre d'occurence des deux noms que je dois entrer par rappoprt a la chaine "Grand amour"

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>




int main()
{
    int  i,j;
 unsigned char PrenomFille[20];
 unsigned char PrenomGarcon[20];
 unsigned char GrandAmour[14]={'\0'};
 unsigned char Chaine[40]={'\0'};
 unsigned char reponse[100]={'\0'};
 int nb_iteration;
    int  Compteur[40]={0};
   





int NbChar(char UnChar, char* UneChaine);
{





         nb_iteration = strlen(Chaine);
 for (i=0;i<nb_iteration;i++)
 {
  Compteur[i] = NbChar(Chaine[i],GrandAmour);
 }    
         
        return NbChar;
}


 strcpy(GrandAmour,"le grand amour");


    printf("tapez le nom de la jeune fille : ");
  scanf("%s", &PrenomFille);
    printf("tapez le nom du garcon : ");
  scanf("%s", &PrenomGarcon);


 strcpy(Chaine,PrenomFille);
 strcat(Chaine,PrenomGarcon);


 
 nb_iteration = strlen(Chaine);
 for (i=0;i<nb_iteration;i++)
 {
  Compteur[i] = NbChar(Chaine[i],GrandAmour);
 }
 //for (nb_iteration=strlen(Chaine);nb_iteration>2;nb_iteration--)
 while (nb_iteration>2)
 {


  for (i=0;i<nb_iteration-1;i++)
  {
   Compteur[i]=Compteur[i]+Compteur[i+1];
   if (Compteur[i]>9)
    Compteur[i] -= 9;


  }




  nb_iteration--;
 // nb_iteration = nb_iteration - 1;
 // nb_iteration -= 1;
 }




 sprintf(reponse,"%d%d",Compteur[0],Compteur[1]);
    printf("la réponse est %s\n",reponse);


 


    getch();
    return 0;
}

5 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
9 avril 2008 à 10:44
Salut
Cette fois ci voila la fonction NbChar

int NbChar(char UnChar, char* UneChaine);
{
      int Nb=0;
      char *P=UneChaine;         //Pointeur sur la chaine a parcourir
      while(*P!='\0')                  //jusqu'au 0 terminal
      {
         if(*P==UnChar)   
               Nb++;
         P++;                             //On passe au caractere suivant
      } 
      return Nb;
}

A+
Mon site internet : http://pistol.petesampras.free.fr
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
9 avril 2008 à 10:52
Pistol_Pete> Pas très performant tout ca... Tu vas parcourir autant de fois ta chaine que de le nombre de lettre qui compose ta chaine de départ... Sans compter les doublons (A=a)....

Sur le poste précedent je proposais une version ou tu ne parcourre qu'une seule fois la chaine en comptabilisant le nombre d'occurence de chacune des lettres (suffit de se baser sur le code ascii).

Shell
0
kev162 Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 10:56
sa ne me dit pas grand chose sans un petit exemple deathcrash
aurait tu un exemple?
merci d'avance
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
9 avril 2008 à 11:32
Si si j'avais mis un bout de code dans ton précedent post.
Pour ce cas la tu as juste a y ajouter une boucle for qui parcours ta premiere chaine (prénom).

Shell
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kev162 Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 13:30
un grand merci a toi, je ne l'avais pas vu en core merci ciao
0
Rejoignez-nous