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 :

probléme ascii ?


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut probléme ascii ?
    Bonsoir,
    voilà mon programme compte le nombre de phrase dans un fichier texte, celui ci stocké ds un tableau à une dimension.
    Pour cela je considére qu'une phrase commence par une majuscule et finie par : '.' ou '!' ou '?' .
    j'ai essayé mon programme avec plusieurs texte, ca marche bien, parcontre pour le nom: "Saint-Exupéry." le programme copte 2 phrases!!!
    voyez-vous d'ou vient le probléme?

    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
     
        i=0;
        j=0;
        while(Tab[i] !=0 && i<MAX)
        {
             if(Tab[i]>=65 && Tab[i]<=90)
               {
                 j=j+1;
                 i=i+1;
                 while((Tab[i]=='.') || (Tab[i]=='!') || (Tab[i]=='?') ) 
                    i=i+1;
               }         
             i=i+1;                      
        }
        printf("\n\nIl y a %d phrases dans ce texte.\n\n", j);

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    N'est-ce pas toi qui avait posé une autre question l'ASCII aujourd'hui?
    Plusieurs choses:
    - ne supposes rien sur l'encodage des caractères, surtout quand tu vas en avoir hors de la plage ASCII
    - n'utilises pas des constantes magiques. Surtout pas pour des caractères, c'est de l'obsfuscation -- mais d'où vient cette manie d'ailleurs ?
    - pourquoi filtrer sur les caractères lus, alors que tu veux juste compter les '?', '.' et '!' ?
    - std::basic_string<>::find_first_of est ton amie
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Sachant que faire un truc vraiment correct n'est clairement pas trivial.

    Comment compter la phrase :
    Alors M. Dupont, votre touche "?" est cassée...

    Bonne chance pour faire un programme qui retourne la valeur 1.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    http://www.unicode.org/reports/tr29/tr29-11.html

    Ça te servira aussi pour ton histoire de mots.
    Attention, c'est compliqué.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Pour incrémenter i jusqu'à la prochaine ponctuation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((Tab[i]!='.') && (Tab[i]!='!') && (Tab[i]!='?') )  i=i+1;

  6. #6
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Citation Envoyé par Luc Hermitte
    - ne supposes rien sur l'encodage des caractères, surtout quand tu vas en avoir hors de la plage ASCII
    - n'utilises pas des constantes magiques. Surtout pas pour des caractères, c'est de l'obsfuscation -- mais d'où vient cette manie d'ailleurs ?
    +1
    et à lire au moins une fois : http://french.joelonsoftware.com/Articles/Unicode.html

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Graffito
    Pour incrémenter i jusqu'à la prochaine ponctuation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((Tab[i]!='.') && (Tab[i]!='!') && (Tab[i]!='?') )  i=i+1;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = ch.find_first_of("!.?", i);
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/06/2008, 10h39
  2. Réponses: 4
    Dernier message: 16/07/2007, 10h16
  3. Problème de caractères ASCII
    Par Gambit35 dans le forum Access
    Réponses: 2
    Dernier message: 23/05/2007, 09h16
  4. Problème ascii vs unicode
    Par ToTo13 dans le forum Langage
    Réponses: 11
    Dernier message: 19/09/2006, 10h32
  5. Réponses: 5
    Dernier message: 03/08/2006, 20h40

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