Nombre d'occurrences d'une lettre dans un texte

Ca.marchera - Modifié par cptpingu le 25/02/2015 à 22:54
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 27 févr. 2015 à 20:36
Bonjour,
j'aimerai écrire un programme qui analyse une chaine de caractere en indiquant le nombre de fois qu'apparait CHAQUE lettre. (je dois utiliser des pointeurs)
voici ce que j'ai fais mais ça marche pas et je but dessus si quelqu'un peut m'éclairer!! Merci!

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

int main()
{

  int ABC[26];
  int ch[50];
  int*PABC;
  char*Pch;

  printf("donnez une chaine ch");
  scanf("%s",ch);

  for(PABC=ABC;PABC<26;PABC++)
  {

      *PABC==0;
  }

  for(PABC=ABC;PABC<ABC+26;PABC++)
   {
      for(Pch=ch;*Pch=strlen(ch)+ch;Pch++)
      {
        int m=65;
        int n=97;
        if((*Pch==m)||(*Pch==n))
          *PABC++;
            m++;
            n++;
      }
   }

   for(PABC=ABC;PABC<ABC+26;PABC++)
   {
      if(*PABC)
        printf("%d \t fois la lettre %c \n ",*PABC, 'A'+(PABC-ABC));
   }


    return 0;
}


A voir également:

7 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 févr. 2015 à 16:40
Bonjour.

Il faut vraiment faire un effort sur le nommage des variables ! Ce n'est pas très bien nommé, et pour toi, et pour nous, ça rend les choses difficiles.
D'après ce que j'ai lu de ce que tu proposes, je pense cerner ton problème. Avant de résoudre cet exercice (qui est facile), je te propose un exercice intermédiaire. Si tu le réussi, alors cet exercice te paraîtra bien plus simple.

En fait, tu as du mal à comprendre la notion de pointeur et comment elle est liée au tableau. Il faut savoir qu'en C, un tableau et un pointeur c'est la même chose.
En effet:
- tab[0], c'est la même chose que *(tab + 0) ou *tab
- tab[1], c'est la même chose que *(tab + 1) ou *(++tab)
- tab[2], c'est la même chose que *(tab + 2) ou *(++ ++ tab)
- etc...

Imagine la chose suivante:
- char* tab = "hello world";

Le caractère 'h' est dans tab[0]. Le caractère 'e' est dans tab[1], etc...
Mais on peut aussi l'écrire comme ceci:
- 'h' est accessible via *tab;
- 'e' est accessible via ++tab; puis *tab;
- 'l' est accessible via ++tab; puis ++tab; puis *tab;
- etc...

Enfin, une chaîne de caractères fini forcément par le caractère '\0'.

Essaie de réaliser la chose suivante:
- On te donne une chaîne de caractère. On ne te donne pas sa taille, et tu n'as pas le droit d'utiliser strlen. Peux-tu m'afficher chacun des caractères de la chaîne ?
(Ca sera la première partie de l'exercice qu'on te demande).

Voici le squelette d'application à compléter:
#include <stdio.h>

void show(const char* str)
{
  // Affichez ici une lettre par ligne
}

int main()
{
  char ch[50] = {0};

  printf("donnez une chaine ch");
  scanf("%s",ch);

  show(ch);

   return 0;
}


__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
1
Rejoignez-nous