IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

commentaire sur un code


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut commentaire sur un code
    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 .

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Re: commentaire sur un code
    Citation Envoyé par Bibouda
    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 ?
    Non, ici tu affecte la valeur 0 (zero) à l'indice de valeur 'i' de ton tableau nLettre. La boucle parcours tous les éléments de ton tableau de 0 à 8.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Salut,

    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 ?
    Non.
    Ici tu initialises toutes les cases du tableau (de la 0 à la 8 ) à 0.
    nlettre[i] représente la ième case du tableau nlettre.
    La boucle for fait varier i de 0 à 8

    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
    Ici la valeur située dans le tableau à l'indice (nl-1) (donc le nl ième element) est incrémentée de 1.

    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?
    Oui j sert à parcourir le tableau.
    On affiche (j+1) pour dire quel est l'element courant (car l'indice 0 represente l'element 1).

    La deuxieme boucle for affiche i fois le caractere _
    Elle s'arrette quand i est egal à la valeur contenue dans la case nlettre[j].


    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 ?
    Oui sauf que ton tableau a une taille de 9 et pas de 10.
    Mais c'est mieux de mettre une constante symbolique en effet, car c'est plus facile à maintenir, si jamais un jour tu veux agrandir ton tableau, tu n'as que celle ci à changer.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    "Oui sauf que ton tableau a une taille de 9 et pas de 10. "

    oui mais c'est quand même define ARRAY_SIZE 10 car le nombre de lettre est infénieur à 10 ...

    au lieu de array_size , j'aurais pu mettre n'importe quoi n'est ce pas?

    genre coucou_tralala 10 , çà marche aussi ?

  5. #5
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par Bibouda
    "Oui sauf que ton tableau a une taille de 9 et pas de 10. "

    oui mais c'est quand même define ARRAY_SIZE 10 car le nombre de lettre est infénieur à 10 ...

    au lieu de array_size , j'aurais pu mettre n'importe quoi n'est ce pas?

    genre coucou_tralala 10 , çà marche aussi ?
    Non ton tableau contient 9 cases :
    Donc il a une taille egale à 9, donc c'est bien
    Oui au lieu de mettre ARRAY_SIZE tu peux mettre ce que tu veux, mais il faut rester logique..

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    oui mais je comprends pas , le chiffre à remplacer dans le code par array est bien 10 , et le développeur BSD à qui j'ai montré çà m'a dit que c'était bien array_size 10 , ya un truc qui cloche là ...

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    mon tableau contient bien 9 cases , mais la valeur maximale du nombre de lettres pour un mot c'est 10 , ce qui justifie le array_size 10 , , le 10 , c'est le 10 de nl ...

  8. #8
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Tout depend ce que tu veux faire avec cette constante, si c'est comme son nom l'indique la taille du tableau, alors ça doit etre pareil que

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    ben comme tu peux le voir dans le code de départ , j'ai 2 nl < 10 , çà veut dire que la taille maximale d'un mot est 9 lettres , et je remplacerai les nl < 10 par nl < ARRAY_SIZE 10 , çà se tient qu'en penses tu ?

  10. #10
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par Bibouda
    ben comme tu peux le voir dans le code de départ , j'ai 2 nl < 10 , çà veut dire que la taille maximale d'un mot est 9 lettres , et je remplacerai les nl < 10 par nl < ARRAY_SIZE 10 , çà se tient qu'en penses tu ?
    Ah mais ce dont tu parles n'a rien à voir avec la taille de ton tableau nlettre.. tu parles du 10 qu'il y a dans le if..ok donc le mot ARRAY_SIZE n'est pas du tout bon bon (la preuve, c'est qu'on a mis 3 posts avant de se comprendre), met plutot MAX_TAILLE_MOT

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    oui effectiement , je sais pas pq le type m'a mis ce mot alors que c'est une grosse brute en C , enfin merci de ton aide .

Discussions similaires

  1. Commentaires sur le code
    Par sikarce dans le forum VHDL
    Réponses: 2
    Dernier message: 17/10/2011, 12h28
  2. Débutant cherche commentaire sur son code
    Par m51_2000 dans le forum Débuter
    Réponses: 6
    Dernier message: 09/06/2011, 13h59
  3. help sur le code d'une procedures stockee
    Par omlip dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/08/2004, 18h45
  4. [CR]Comment faire de longs commentaires dans le code
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 07/06/2004, 20h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo