Bonsoir à tous , j'ai l'exercice suivant :
écrire un programme en C qui affiche l'histogramme de la longueur ds mots rencontrés en entrée .
fonctions autorisées : getchar , putchar , printf
utilisation de boucles , variables , tableaux ( 1 seul tableau ) , rien d'autre .
Voici l'algorithme en français :
1Je parcours la chaine de caractère en entrée , chaque fois que j'arrive à la fin d'un mot je compte les lettres du mot , et j'incrémente la case du tableau correspondante , si le mot fait 5 lettres j'incrémente la case 5 .
2. je parcours le tableau tout en affichant l'histogramme , et une autre variable lit la valeur dans chaque case et affiche le signe _ tant que ce n'est pas fini .
exemple de ce que doit faire le programme :
phrase reçue en entrée :
Bonsoir , comment te portes tu petit coq , hi hi .
résultat à l'écran :
1:
2: ____
3: _
4:
5: _
6: _
7: _
8: _
9:
ce qui veut dire , 0 mot de 1 lettre , 4 mots de 2 lettres ...
voici mon code en C , je sais qu'il est presque bon mais il y a une petite erreur à mon avis sur la fin avec la variable i , car mon programme m'affiche un défilement infini de _ _ _ _ _
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include <stdio.h> int main(void) { int a, i, j;; int nlettre[10]; int nl = 0; while ( ( a = getchar() ) != EOF && nl < 10) { if ( a == ' ' || a == '\n' || a == '\t' ) nl=0; else nl++; nlettre[nl]++; } for ( j = 0; j < 10; j++) { printf("%d :", j); for ( i=0; i<nlettre[j]; i++) { printf("_"); } } return 0; } le début est bon , je suis certain que le blème vient de la dernière boucle for... PS : je n'ai pas besoin de rajouter de variables ni de tableaux , tout y est , mais mal disposé je pense , merci de votre aide .
Partager