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 :

Exercice K&R diagramme longueur mot


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    ...
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Alimentation

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Exercice K&R diagramme longueur mot
    Bonjour,

    Je suis nouveau sur ce forum.Je suis passioné d'informatique .j'ai commencé a apprendre le language C.Cela fait quelque mois.Pour cela je me suis attaqué au livre nommé "the C programming language".Toutefois je n'est aucune connaissance pratiquant la programmation alors je souhaitai partager un peux de mon temp avec vous .

    J'ai une petite interrogation a propos d'un code que j'ai écris pour un exercice.L'exercice demande d'écrire un code afin de déssiner un diagramme énumérant le nombre de lettre par mot.

    J'ai donc commencé a gratter mon cailler de brouillon.J’essaye de construire mon code par étape et cela me parait plus clair.

    Afin de déterminer si le caractère est une lettre j'ai fait comme cela:

    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
    #include <stdio.h>
     
     
    int main(){
     
    	int i , c , nblettre; /*Je déclare mes variables.c pour enregister la valeur getchar() et nblettre pour enregistré la valeur du nb de lettre 		dans un mot*/
     
    	int tabnblettre[20];/*Je déclare mon tableau pour décompter les mot par nombre de lettre.tabnlettre[1] = mot a une lettre...*/
    	c = nblettre = 0;/*J'initialise mes variables c et nblettre*/
     
     
    	for(i=0;i<20;++i) /*j'initialise toute mes variables du tableau a 0*/
    	tabnblettre[i]=0;
     
    	while((c=getchar())!=EOF){
     
    		if(c>=65 && c<=90)/*Déterminer si ce sont des lettres*(minuscule dans le tb ascii)*/
    		++nblettre;
    		else if (c>=97 && c<=122)/*Determiner si ce sont des lettres(majuscule dans tableau ascii)*/
    		++nblettre;
    		else 
    		++tabnblettre[nblettre];/*si ce n'est ni une maj ni une min c'est que l'on sort du mot alor j'incrémente la valeur dans mo tableau*/
    		nblettre = 0;
    		}
     
    	printf("\nClassement de mot par longeur de lettre:");
    	for(i=0;i<20;++i)
    	printf("\nMot a %d lettre : %d mot",i,tabnblettre[i]);
     
    }
    Mais ca ne fonctionne pas.Apparemment je ne peux pas utiliser les valeur ascii des caractère dans les condition de if.Dumoin de cette manière.Ou alor est-je fait une autre érreur.

    Merci d'avance

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Bienvenue et merci de ne pas nous imposer un wall of code sans commentaires dont il faudrait deviner la fonction. Précises-nous toutefois lorsqu'un programme ne fonctionne pas quel est le comportement exact, car il peut mal fonctionner d'innombrables manières.

    En l'occurrence ce programme fonctionne parfaitement... à une petite modification près que je te laisse deviner. Indice : essaies d'afficher le contenu de nblettre à l'intérieur de ta boucle.

  3. #3
    Candidat au Club
    Homme Profil pro
    ...
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Alimentation

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Bienvenue et merci de ne pas nous imposer un wall of code sans commentaires dont il faudrait deviner la fonction. Précises-nous toutefois lorsqu'un programme ne fonctionne pas quel est le comportement exact, car il peut mal fonctionner d'innombrables manières.

    En l'occurrence ce programme fonctionne parfaitement... à une petite modification près que je te laisse deviner. Indice : essaies d'afficher le contenu de nblettre à l'intérieur de ta boucle.
    Merci .
    En éffet je n'est pas précisé le résultat rendu par le terminal.Par exemple si l'entré est la chaîne de caractère suivante: "Je suis eugene.Je suis brun."

    Le résultat est le suivant:

    Je suis eugene.Je suis brain.

    Classement de mot par longeur de lettre:

    Mot a 0 lettre : 6 mot
    Mot a 1 lettre : 0 mot
    Mot a 2 lettre : 0 mot
    Mot a 3 lettre : 0 mot
    Mot a 4 lettre : 0 mot
    Mot a 5 lettre : 0 mot
    Mot a 6 lettre : 0 mot
    Mot a 7 lettre : 0 mot
    Mot a 8 lettre : 0 mot
    Mot a 9 lettre : 0 mot
    Mot a 10 lettre : 0 mot
    Mot a 11 lettre : 0 mot
    Mot a 12 lettre : 0 mot
    Mot a 13 lettre : 0 mot
    Mot a 14 lettre : 0 mot
    Mot a 15 lettre : 0 mot
    Mot a 16 lettre : 0 mot
    Mot a 17 lettre : 0 mot
    Mot a 18 lettre : 0 mot
    Mot a 19 lettre : 0 mot

    merci pour l'indice je vais enquêter dessus des maintenant.

  4. #4
    Candidat au Club
    Homme Profil pro
    ...
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Alimentation

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé .Merci pour l'indice.Le problème étais que déclaration suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else
    		++tabnblettre[nblettre];
    		nblettre = 0;
    Elle a pour rôle de mettre a 0 le compteur a chaque fin de mot.Cettre déclaration était exécuté a chaque tour de boucle peut importe la condition.Il manquait un jeux d'accolade sur le dernier else.Je suis vacciné maintenant ,enfin j’espère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else{ 
    		++tabnblettre[nblettre];
    		nblettre = 0;
    		}
    Version corrigé

  5. #5
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Parfait.

    Attention, seule l'instruction nblettre = 0; était exécutée inconditionnellement. En l'absence d'accollades, l'instruction (ou la séquence d'instructions si le très rare opérateur , est utilisé) qui suit else détermine son bloc.

    Choisis un style d'indentation sans ambiguïté pour toi afin d'éviter ce genre d'erreur.

  6. #6
    Candidat au Club
    Homme Profil pro
    ...
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Alimentation

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Oui merci je vais étudier cela.(identation)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Admin] Longueur mot de passe
    Par MOMO_LAM dans le forum Administration-Migration
    Réponses: 2
    Dernier message: 20/02/2012, 11h10
  2. A partir de {a,b} construire tous les mot de longueur <= n
    Par H-bil dans le forum Algorithmes et structures de données
    Réponses: 24
    Dernier message: 20/10/2007, 19h23
  3. Réponses: 5
    Dernier message: 15/01/2007, 11h23
  4. mots de longueur n à base de 0 et 1
    Par momeftah dans le forum C
    Réponses: 3
    Dernier message: 14/01/2007, 19h28

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