Problème en c

Bonjour,
je veux quelqu'un qui m'aide a faire un programe qui:
créer un programme qui retourne pour chaque lettre de l'alphabet le nombre de son apparition dans un texte(les accents ne seront prises en compte)

par exemple : "je veux quelqu'un qui m'aide"

a b c d e f g h i j k l m n o p q r s t u v w x y z

1 0 0 1 4 0 0 0 2 1 0 1 1 1 0 0 3 0 0 0 4 1 0 1 0 0
Configuration: Windows XP
Internet Explorer 7.0

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,
    #include<stdio.h>
    
    int main()
    {
            int espace,i,c;
            int freq[256];
    
            espace = 0;
    
            for(i=0;i<256;++i)
                    freq[i] = 0;
    
            while((c = getchar()) != EOF){
                    if(c == ' ' || c == '\t' || c == '\n')
                            ++espace;
                    else
                            ++freq[c];
            }
    
            for(i=97;i<=122;++i)
                            printf("%c - %d fois.\n",i,freq[i]);
            printf("espace + tab + saut ligne = %d\n",espace);
    
            return 0;
    }
    
    1. Modérateur
      Chez moi oui (une fois que tu as tapé la phrase fait CTRL + D ou CTRL + C
      lami20j@debserv:~/trash$ cat freq_char.c
      #include<stdio.h>
      
      int main()
      {
              int espace,i,c;
              int freq[256];
      
              espace = 0;
      
              for(i=0;i<256;++i)
                      freq[i] = 0;
      
              while((c = getchar()) != EOF){
                      if(c == ' ' || c == '\t' || c == '\n')
                              ++espace;
                      else
                              ++freq[c];
              }
      
              for(i=97;i<=122;++i)
                      //if(freq[i] != 0)
                              printf("%c - %d fois.\n",i,freq[i]);
              printf("espace + tab + saut ligne = %d\n",espace);
      
              return 0;
      }
      
      
      
      lami20j@debserv:~/trash$ gcc freq_char.c
      lami20j@debserv:~/trash$ ./a.out
      "je veux quelqu'un qui m'aide"
      a - 1 fois.
      b - 0 fois.
      c - 0 fois.
      d - 1 fois.
      e - 4 fois.
      f - 0 fois.
      g - 0 fois.
      h - 0 fois.
      i - 2 fois.
      j - 1 fois.
      k - 0 fois.
      l - 1 fois.
      m - 1 fois.
      n - 1 fois.
      o - 0 fois.
      p - 0 fois.
      q - 3 fois.
      r - 0 fois.
      s - 0 fois.
      t - 0 fois.
      u - 5 fois.
      v - 1 fois.
      w - 0 fois.
      x - 1 fois.
      y - 0 fois.
      z - 0 fois.
      espace + tab + saut ligne = 6

      1. Modérateur
        sinon essai
        #include<stdio.h>
        #include<stdlib.h>
        
        int main()
        {
                int espace,i;
                int freq[256];
                char *s;
        
                if (NULL ==  (s = (char *) malloc (200 * sizeof(char))))
                        return -1;
                printf("Entrez une phrase : ");
                fgets(s,200,stdin);
        
                espace = 0;
        
                for(i=0;i<256;++i)
                        freq[i] = 0;
        
                while(*s != '\0'){
                        if(*s == ' ' || *s == '\t')
                                ++espace;
                        else
                                ++freq[*s];
                        ++s;
                }
        
                for(i=97;i<=122;++i)
                        //if(freq[i] != 0)
                                printf("%c - %d fois.\n",i,freq[i]);
                printf("espace + tab + saut ligne = %d\n",espace);
        
                return 0;
        }
        
        1. mé apré qu'on execute le programme il devré afiché a lécron :
          enter votre phrase : je veux quelqu'un qui m'aide
          a - 1 fois.
          b - 0 fois.
          c - 0 fois.
          d - 1 fois.
          e - 4 fois.
          f - 0 fois.
          g - 0 fois.
          h - 0 fois.
          i - 2 fois.
          j - 1 fois.
          k - 0 fois.
          l - 1 fois.
          m - 1 fois.
          n - 1 fois.
          o - 0 fois.
          p - 0 fois.
          q - 3 fois.
          r - 0 fois.
          s - 0 fois.
          t - 0 fois.
          u - 5 fois.
          v - 1 fois.
          w - 0 fois.
          x - 1 fois.
          y - 0 fois.
          z - 0 fois.
          espace + tab + saut ligne = 6
          1. Modérateur
            je ne vois pas où et ton problème
            tu as compilé le programme?
            tu l'as exécute?
            1. Modérateur
              Re,
              #include<stdio.h> /* ici on inclu les headers (en-tête) - ce sont des fichiers .h qui */
              #include<stdlib.h>/* contiennent des prototypes des fonctions, etc. */
              
              int main()
              {
                int espace,i; /* la variable espace stocke le nombre d'espaces, i une variable de contrôle */
                int freq[256]; /* la table ASCII va de 0 à 127 et ASCII étendue de 128 à 255 */
                                         /*  ce qui fait en total 256 */
                char *s;       /* un pointeur de type caractère */
              
                if (NULL ==  (s = (char *) malloc (200 * sizeof(char))))
                     return -1; /* on alloue de la mémoire - la chaine aura maximum 200 caractères */
                                /* si le pointeur retourner vaut NULL, alors il n'y pas de la mémoire disponible */
                                             /* et on quitte le programme en retournant la valeur -1 */
                 printf("Entrez une phrase : ");
                 fgets(s,200,stdin); /* on stocke la chaine entrée au clavier (stdin c'est l'entrée standard = le clavier) */
              
                 espace = 0; /* on initialise la variable qui va compter les espaces et tabulations */
              
                 for(i=0;i<256;++i) /* on initialise les cases du tableau avec la valeur 0 */
                   freq[i] = 0;
              
                 while(*s != '\0'){ /* tant que la fin de la chaîne n'est atteinte  le caractère \0 (NULL) se trouve à la fin de chaîne*/
                   if(*s == ' ' || *s == '\t') /* si le caractère est un espace ou tabulation */
                                               /* *s c'est la valeur contenu par l'objet pointé par s */
                                               /*  *s est équivalent à s[0] - le 1er élément de tableau de caractères */
                     ++espace; /* on compte les espaces et tabulations */
                   else                            /* sinon */
                     ++freq[*s]; /* on compte les caractères */
                                 /* freq c'est un tableau des entiers */
                                 /* en C si on stocke un caractère dans un entier on a le code ascii de caractère */
                                 /* par exemple pour le caratère A on aura freq[65] */
                                 /* au début j'ai initialisé le tableau à zéro pour chaque case de 0 à 255 */
                                 /* si je trouve un A ça donne freq[65] = 1 et ainsi de suite */
                              ++s; /* je passe au caractère suivant */
                      }
              
                for(i=97;i<=122;++i) /* j'affiche seulement la féquence des minuscules ASCII: a=97 et z=122 */
                  printf("%c - %d fois.\n",i,freq[i]);
                printf("espace + tab + saut ligne = %d\n",espace); /* affiche le nombre d'espaces et tabulations */
              
                return 0;
              }
              
              1. je veux savoir kélé le probleme dans se programme :

                #include<stdio.h>
                #include<conio.h>
                main()
                {
                int i,j=0;
                char mot[50];
                printf("saisit votre mot :");
                gets(mot);
                for(i=0;i<256;i++)
                while(mot[i])
                {
                if(mot[i++]==' ' || mot[i++]=='\t')
                j++;
                else
                mot[i]++;
                }
                for(i=97;i<=122;i++)
                printf("%c - %d fois.\n",i,t[i]);
                getch();
                }
                1. Modérateur
                  #include<stdio.h>
                  int main()
                  {
                          int i,j=0;
                          char mot[50];
                          int t[256];
                  
                          for (i=0;i<256;++i)
                                  t[i] = 0;
                          i=0;
                  
                          printf("saisit votre mot :");
                          gets(mot);
                          while(mot[i] != '\0'){
                                  if(mot[i] == ' ' || mot[i] =='\t')
                                          j++;
                                  else
                                          t[mot[i]]++;
                                  ++i;
                          }
                  
                          for(i=97;i<=122;i++)
                                  printf("%c - %d fois.\n",i,t[i]);
                          getchar();
                          return 0;
                  }
                  
                  1. ça marche
                    merci bcp "lami20j" de ton aide
                    tu peu méxpliké skona fé car jé pa compri pourkoi on a utilisé un tableau
                    merci