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 :

Sur le code ASCII en langage C


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 105
    Points : 53
    Points
    53
    Par défaut Sur le code ASCII en langage C
    Dans l'intention de classer des caractères par ordre alphabétique j'utilise leur code ASCII.
    Maintenant Dans l'intention de classer des mots (chaines de caractères) par ordre alphabétique,
    comment obtenir la valeur numérique correspondant à ma chaîne.
    merci d'avance!

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Bonjour et bienvenue,

    Il faut utiliser strcmp() (String Compare), qui sert à cela.

    Sinon, si tu veux écrire cette fonction toi-même, il suffit de comparer deux à deux les caractères respectifs de tes chaînes, en commençant par le premier de chacune d'elle. S'ils sont différent, la comparaison s'arrête là, avec le résultat. S'ils sont égaux, tu passes aux suivants et tu refais le même test, jusqu'à la fin si nécessaire.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Toogda Voir le message
    comment obtenir la valeur numérique correspondant à ma chaîne.
    Bonjour

    Je ne suis pas certain de bien comprendre la phrase "valeur numérique correspondant à une chaine". Quelle est par exemple pour toi la valeur numérique de "toto" ???

    Si maintenant tu parles de la valeur numérique de chaque caractère de la chaine alors ça devient plus clair. En C tout est nombre. Donc si ta chaine contient (par exemple) "Bonjour" elle contient en réalité {66, 111, 110, 106, 111, 117, 114, 0}.
    Si tu affiches un caractère via printf(), l'afficher avec "%c" te donnera le caractère ascii, l'afficher avec "%d" te donnera sa valeur numérique en décimal, avec "%o" tu auras sa valeur en octal et avec "%x" tu auras sa valeur en hexadécimal.

    De là, comparer deux chaines devient trivial puisqu'il te suffit d'utiliser les opérateurs mathématiques usuels sur chaque caractère des deux chaines pris deux à deux. C'est d'ailleurs tellement trivial que comme l'a dit Obsidian, la librairie standard te propose la fonction toute faite strmp() qui fait exactement ce travail...
    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]

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 105
    Points : 53
    Points
    53
    Par défaut Ok merci . j'utilise la strcmp() mais ya quelque chose qui m'échape et voulè un éclaisissement!
    utilisant le principe du tri selection
    voisi mon code pourclasser par ordre alphabétique

    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
     
    //Adherent adh[] est une variable de type structure contenant un char adh_Nom[50]
    //echanger(adh,i,mini) sert a permiter adh[i] et adh[mini] 
     
    void classer_a_z(Adherent adh[], int nbt)
    {
     
        int j, i, mini;
        char tmpNom[50];
     
        for(i=0; i<nbt; i++)
        {
            mini=i;
            for(j=i+1; j<nbt; j++)
            {
                 if(strcmp(adh[mini].adh_Nom ,adh[j].adh_Nom) == 1)
                    j=mini;
                 echanger(adh,i,mini);
            }
        }
    }
    cela compile sans signaler d'errur mais ma liste reste déclasser!
    merci d'avance de m'éclaircir sur ce qui va pa!

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Pourtant tu as 1 erreur + 1 merdouille , je te redonne le pseudo code

    Et à quoi sert ta variable tmpNom ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      procédure tri_selection(tableau t, entier n)
          pour i de 1 à n - 1
              min <- i
              pour j de i + 1 à n
                  si t[j] < t[min], alors min <- j
              fin pour
              si min != i, alors échanger t[i] et t[min]
          fin pour
      fin procédure
    Lorsque tu as trouvé une valeur minimale tu la sauvegarde min <- j.
    Et ensuite tu fais un test si tu dois échanger ou pas si min != i, alors.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Accessoirement, relis attentivement la page du manuel de "strcmp", parce que "strcmp == 1" c'est faux !

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 105
    Points : 53
    Points
    53
    Par défaut A super , xa marche bien mintana!
    merci

  8. #8
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Tant mieux !
    Et si tu partageais ton code corrigé ? Ca pourrait rendre service à quelqu'un d'autre, dans le futur...

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 105
    Points : 53
    Points
    53
    Par défaut ok! voici le code corigé!
    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
     
    /** methode permettant de classer des variables de type char d'une structure Adherent par ordre alphabétique  **/
    void classer_a_z(Adherent adh[], int nbt)
    {
     
        int j, i, mini;
     
        for(i=0; i<nbt; i++)
        {
            mini=i;
            for(j=i+1; j<nbt; j++)
            {
                 if(strcmp(adh[mini].adh_Nom ,adh[j].adh_Nom) == 1)
                    mini=j;
            }
            if(i != mini)
                echanger(adh,i,mini);
        }
    }
     
    void echanger(Adherent adh[], int x, int y)
    {
        Adherent tmp;
     
        tmp = adh[x];
        adh[x] =  adh[y];
        adh[y]  = tmp;
    }
    une petite question en plus: Dans quelle domaine le language C excelle t-il en ce moment?

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, il ne faut pas comparer la valeur retournée par strcmp() à 1, ni à quoi que ce soit d'autre que zéro, en fait, parce que le standard dit seulement "une valeur supérieure à zéro", et non pas "1".

    Tu dois donc remplacer ton if(strcmp(adh[mini].adh_Nom ,adh[j].adh_Nom) == 1) par if(strcmp(adh[mini].adh_Nom ,adh[j].adh_Nom) > 0).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Ok cet compris!!!

Discussions similaires

  1. [Débutant] probleme afficher code ascii sur l'editeur de borland 5.02
    Par cesar333 dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/09/2010, 14h47
  2. Affichage du code ascii sur 8 bits
    Par baguinga dans le forum Débuter
    Réponses: 3
    Dernier message: 18/10/2007, 19h01
  3. Code ASCII du symbole Euro
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/04/2007, 01h27
  4. [Hardware portable] Comment entrer un code Ascii?
    Par l.sage dans le forum Ordinateurs
    Réponses: 13
    Dernier message: 11/08/2005, 13h04
  5. [langage] code ascii en Perl
    Par intox18 dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2005, 09h35

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