Problème en c

Fermé
mp007 - 4 janv. 2008 à 23:19
 mp007 - 5 janv. 2008 à 14:29
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

13 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
4 janv. 2008 à 23:33
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
merci,
mé ça pa marché!!!!!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 janv. 2008 à 00:40
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 janv. 2008 à 00:51
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

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

Posez votre question
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 janv. 2008 à 00:57
je ne vois pas où et ton problème
tu as compilé le programme?
tu l'as exécute?
0
merci bcp ça marche.
0
merci bcp 1 autre fois si tu peu m'expliké comment ta fé svp
0
ki peu m'éxpliké skona fé?????
merci
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 janv. 2008 à 13:43
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
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 janv. 2008 à 14:18
#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
ç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