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
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    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 actif 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
    Points : 253
    Points
    253
    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.
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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 actif 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
    Points : 253
    Points
    253
    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..
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  6. #6
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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 actif 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
    Points : 253
    Points
    253
    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
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  9. #9
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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 actif 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
    Points : 253
    Points
    253
    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
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  11. #11
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    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