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 :

Compteur de voyelles


Sujet :

C

  1. #21
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 502
    Billets dans le blog
    1
    Par défaut
    Décrit comme tu le fais @sambia39, ça ressemble plus à de l'implementation-defined behavior qu'à de l'undefined behavior. Voir du unspecified mais ce dernier terme est plus vague pour moi...

    Pour rappel à tout le monde : https://stackoverflow.com/questions/...fined-behavior

  2. #22
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bardiiar Voir le message
    je pense cette fois est bonne
    Oui, à priori il semble fonctionner.

    Mais ce code est une horreur. Le code typique du bourrin qui veut aller au plus vite au lieu d'aller au plus fin. Déjà longText n'est pas utilisé. Tes compteurs sont signés (peut-on avoir "-5" voyelles ?). Tu exécutes strlen() à chaque itération (quant à tolower() c'est sa fête) et tu n'exploites absolument pas la possibilité des tableaux pour stocker tes compteurs.
    Et le return voyelles final est bien pensé (tu t'es dit que ça pourrait être utile d'avoir un code qui renvoie la valeur attendue à son environnement et en cela c'est une bonne tournure d'esprit) malheureusement ce n'est pas possible car une valeur renvoyée par un programme ne peut être comprise qu'entre 0 et 255 et est considérée comme état du programmme (0=ok, pas 0=souci).

    Code c : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
    typedef struct {
    	unsigned char voy[10];
    	unsigned long cpt;
    } t_voy;
     
    t_voy *exploreTab(unsigned char c, t_voy *tabVoy) {
    	t_voy *ptVoy;
    	unsigned char *ptC;
     
    	for (ptVoy=tabVoy; ptVoy->voy[0] != '\0'; ptVoy++) {
    		for (ptC=ptVoy->voy; *ptC != '\0'; ptC++)
    			if (c == *ptC) return ptVoy;
    	}
    	return NULL;
    }
     
    int main(void) {
    	unsigned char text[256];
    	t_voy tabVoy[]={
    		{{'a', 133, '\0'}, 0},
    		{{'e', 130, 136, 138, '\0'}, 0},
    		{"i", 0},
    		{"o", 0},
    		{"u", 0},
    		{"y", 0},
    		{"", 0},
    	};
    	t_voy *ptVoy;
    	unsigned long totalV;
    	size_t i;
     
    	printf("Entre votre text ici : ");
    	fgets(text, 256, stdin);
     
    	for (i = 0, totalV=0; text[i] != '\0'; i++) {
    		if ((ptVoy=exploreTab(tolower(text[i]), tabVoy)) != NULL) {
    			ptVoy->cpt+=1;
    			totalV+=1;
    		}
    	}
     
    	for (ptVoy=tabVoy; ptVoy->voy[0] != '\0'; ptVoy++)
    		printf("Total voyelles (%s) est : %lu\n", ptVoy->voy, ptVoy->cpt);
     
    	printf("Total voyelles est : %lu\n", totalV);
     
    	return 0;
    }

    Bon j'avoue j'ai un peu utilisé des notions pas forcément connues (structures, tableau de structures, arithmétique des pointeurs) mais ça te donne une idée de ce qu'est un code souple. Si demain je veux compter les consonnes, je les rajoutes juste dans le tableau principal et je recompile et tout le code s'y adaptera tout seul (bon faudra peut-être renommer les trucs car "voy" ne sera plus en adéquation avec la nature des lettres comptées mais j'ai tapé ça rapidement et c'est juste pour illustrer l''idée des réflexes à acquérir). Si tu dois examiner si une chose est égale à l'un ou l'autre de 2 trucs, programme alors comme si demain ça pouvait devenir 500 trucs. Et si tu as 6 possibilités aujourd'hui, programme alors comme si demain tu pouvais en avoir 6000. Et n'hésite pas à abuser de fonctions (j'en ai écrit une qui balayait le tableau mais j'ai failli en écrire une seconde pour balayer chaque chaine du tableau (en considérant que pour cet exercice, strchr() m'était interdit !!!))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Par défaut
    Merci à vous pour votre aide... et pour toutes ces ressources et infos. Sujet résolu!

    et un grande merci à @Sve@r

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Compteur de chaque voyelles dans une chaine de caractères
    Par jasma dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 11/10/2012, 10h38
  2. [PB CONCEPTUEL] avec compteur/trigger
    Par kase74 dans le forum SQL
    Réponses: 6
    Dernier message: 25/03/2004, 11h02
  3. Filtrer les voyelles
    Par Babyneedle dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/12/2003, 15h12
  4. Remise à 0 d'un compteur automatique
    Par missllyss dans le forum SQL
    Réponses: 4
    Dernier message: 15/12/2003, 16h46
  5. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08

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