Problème en c

mp007 -  
 mp007 -
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

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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;
    }
    
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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

    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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;
    }
    
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. mp007
     
    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
    0
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    je ne vois pas où et ton problème
    tu as compilé le programme?
    tu l'as exécute?
    0
  7. mp007
     
    merci bcp 1 autre fois si tu peu m'expliké comment ta fé svp
    0
  8. mp007
     
    ki peu m'éxpliké skona fé?????
    merci
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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;
    }
    
    0
  10. mp007
     
    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();
    }
    0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    #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;
    }
    
    0
  12. mp007
     
    ç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
    0