Bonjour , voici un code sur lequel j'aimerais quelques précisions ( je l'ai déjà montré mais là il marche :

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
 
int main(void)
{
  int a, i, j;;
  int nlettre[9];
  int nl = 0;
 
for ( i = 0; i < 9; i++)
nlettre[i] = 0;
 
  while ( ( a = getchar() ) != EOF && nl < 10)
{
    if ( (a == ' ' || a == '\n' || a == '\t' ) && nl > 0 && nl < 10 )
  {
  nlettre[nl-1]++;
      nl=0;
  }
    else
  {
      nl++;
  }
 
  for ( j = 0; j < 9; j++)
{
    printf("%d :", j+1);
    for (  i=0; i<nlettre[j]; i++)
    {
      printf("_");
    }
      printf("\n");
  }
  return 0;
}
1ere question :


for ( i = 0; i < 9; i++)
nlettre[i] = 0;

cette partie veut dire que en fait on met une variable i dans le tableau qui s'incrémentera seulement jusqu'à 9 ?

2eme question :

nlettre[nl-1]++; , ici on incrémente la valeur de nl - 1 , car en fait , un mot de 1 lettre se trouve à l'offset 0 du tableau ? mais quel est l'offset d'une case de tableau svp? merci

3eme question :

for ( j = 0; j < 9; j++)
{
printf("%d :", j+1);
for ( i=0; i<nlettre[j]; i++)

cette variable j , est celle qui parcourt le tableau si je ne me trompe pas ? et on écrit j + 1 , car je n'affiche pas les mots de 0 lettres ?
la ligne for ( i=0; i<nlettre[j]; i++) j'ai un peu de mal à la traduire , elle veut dire pour i qui vaut zéo et tant que i est infénieur à... à quoi?

dernière question : les 10 dans mon code , est ce que j'aurais pu les remplacer par une constante symboliques , genre je déclare au début :

#define ARRAY_SIZE 10 ?

merci de votre aide .