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

SL & STL C++ Discussion :

c++ map et count


Sujet :

SL & STL C++

  1. #41
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut
    Citation Envoyé par corrector Voir le message
    Si ton programme n'est pas indenté, on ne peux pas voir l'indentation (qui n'existe pas) non plus.

    Au fait, comprends-tu ce qu'est l'indentation?
    On n'est pas pour critiquer mais pour s'entre-aider
    j'essais de faire le maximum et quand j'y arrive pas je demandes de l'aide .
    Toutefois si tu veux m'aider je veux bien sinon SALUT
    ps : c'est pas parce que j'ai du mal ave du c++ que je suis nul
    heuresement que je ne t'ai pas attendu savoir ce que veut dire indentation

  2. #42
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par kouack Voir le message
    j'ai :
    ifstream file( "D:\Dev-Cpp\test.txt" );
    ofstream outfile( "D:\Dev-Cpp\Projet\out.txt" );

    erreurs :
    D:\Dev-Cpp\Untitled2.cpp [Warning] unknown escape sequence '\P'
    D:\Dev-Cpp\Untitled2.cpp [Warning] unknown escape sequence '\D'
    As-tu lu les exemples de code qu'on t'a proposé?

  3. #43
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Il faut doubler les backslashs sinon ça veut dire autre chose (je te laisse chercher quoi).
    Essaye de faire attention et de te relire car tu oublies souvent des mots dans tes phrases et c'est pas agréable de te lire.

  4. #44
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut
    Merci j'ai vu comment faire fallait juste doubler les accollades comme ceci:
    D:\\Dev-Cpp\\out.txt
    D:\\Dev-Cpp\\test.txt

  5. #45
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Les accolades, ce sont { et }
    / et \ ce sont des slashs et antislashs


    donc ça marche maintenant ?

  6. #46
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut
    j'ai

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    #include <algorithm>
    #include <sstream>
    #include <set>
    #include <map>
    #include <string>
    #include <fstream>
    #include <iterator>
    #include <iostream>
     
     
    using namespace std;
     
     
    // Outil de traitement de mots qui retire les séparateurs
    struct RetireSeparateurs
    {
      string Traiter( string const & mot, string const & separateurs ) const
      {
        string motRetour( mot );
     
        // Pour chaque lettre du mot
        for ( size_t i = 0; i < motRetour.size(); ++i )
        {
          // La lettre est un séparateur
          if ( separateurs.find( motRetour[i] ) != string::npos )
          {
            motRetour.erase( i );
            --i;
          }
        }
     
        return motRetour;
      }
    };
     
     
    // Prédicat indiquant si un mot répond au critère : plus de trois caractère
    struct PlusDeTroisCaracteres
    {
      bool Verifier( string const & mot ) const
      {
        return mot.size() > 3;
      }
    };
     
     
    // Foncteur qui, à partir d'un mot, remplit la map et le set
    template <typename TRAITEMENT,
              typename CRITEREAJOUT>
    struct Remplir
    {
      Remplir( map<string, int> & tousLesMots,
               set<string>      & doublons,
               string const     & sep )
        : m_map( tousLesMots ),
          m_set( doublons ),
          m_sep( sep ),
          m_pos( 0 )
      {
      }
     
      template <typename T>
      void operator() ( T const & constmot )
      {
        // Obtient un nouveau mot débarassé des séparateurs
        string mot( TRAITEMENT().Traiter( constmot, m_sep ) );
     
        // Un séparateur isolé ?
        if ( mot.empty() )
          return;
     
        // Le mot est bien réél, on incrémente la position
        ++m_pos;
     
        // Le mot répond-t-il aux critères ?
        if ( !CRITEREAJOUT().Verifier( mot ) )
          return;
     
        // Le mot existe-t-il déjà ?
        if ( m_map.find( mot ) != m_map.end() )
          // Un doublon détecté
          m_set.insert( mot );
        else
          // Un nouveau mot, on stocke sa position
          m_map[ mot ] = m_pos;
      }
     
    private:
      map<string, int> & m_map;
      set<string>      & m_set;
      string const     & m_sep;
      int                m_pos;
    };
     
     
    // Foncteur qui supprime un mot d'une map
    struct Supprimer
    {
      Supprimer( map<string, int> & tousLesMots )
        : m_map( tousLesMots )
      {
      }
     
      template <typename T>
      void operator() ( T const & mot ) const
      {
        m_map.erase( mot );
      }
     
    private:
      map<string, int> & m_map;
    };
     
     
    int main(int argc, char *argv[1])
    {
     
      // Ouverture du bon fichier
      ifstream file;
      file.open(argv[1], ios::in);
     
     
      // Map qui va au FINAL contenir les mots uniques
      // de plus de 3 carac avec leur position
      map<string, int> motsUniques;
     
      // Set intermédiaire des mots doublons
      // Sert à retirer (après coup) les doublons de la map
      set<string>      doublons;
     
      // Chaine contenant les caractère a ne pas prendre en compte
      // On pourrait plutot utiliser un Set pour plus de rapidité
      string           separateurs("()[].,'");
     
      // Itere chaque "mot" du fichier
      // (séparés par des espaces ou des sauts de ligne)
      // Insère les mots dans la map selon un critère
      // après traitement préalable et trouve les doublons
      for_each( istream_iterator<string>(file), istream_iterator<string>(),
                Remplir<RetireSeparateurs,PlusDeTroisCaracteres>( motsUniques, doublons, separateurs ) );
     
      // Supprime de la map les doublons contenus dans le Set
      for_each( doublons.begin(), doublons.end(),
                Supprimer( motsUniques ) );
     
      // Ecriture du résultat
      ofstream outfile;
      outfile.open( "D:\\Projet2008\\Dev-Cpp\\Projet\\out.txt" , ios::out);
      for ( map<string, int>::iterator it = motsUniques.begin(); it != motsUniques.end(); ++it )
        outfile << it->first << " " << it->second << endl;
     
      return 0;
    }
    ensuite j'essaie de lire le fichier en parametre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main(int argc, char *argv[1])
    {
     
      // Ouverture du bon fichier
      ifstream file;
      file.open(argv[1], ios::out);
      ....
    ofstream outfile( "D:\\...out.txt")
    Quand je passes par argument le chemin de fichier comment se fait-il
    que dans le fichier de sortie out.txt il y'a rien d'ecrit(0 octet)?
    (le code etant le meme qu'au dessus)

  7. #47
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par kouack Voir le message
    On n'est pas pour critiquer mais pour s'entre-aider
    j'essais de faire le maximum et quand j'y arrive pas je demandes de l'aide .
    Pour l'instant je ne t'ai pas vu faire beaucoup d'efforts - c'est une lilote.

    Citation Envoyé par kouack Voir le message
    Toutefois si tu veux m'aider je veux bien sinon SALUT
    Oula, du calme.

    D'abord, tu n'as pas à m'interdire de poster dans cette discussion. Tu l'as initiée, elle ne t'appartient pas.

    Ensuite, je cherche effectivement à t'aider. Ne serait-ce qu'en te signalant que les personnes ici ne sont pas entièrement à ton service, et que tu dois aussi bosser. Et que c'est en posant des question claires que tu aura le plus de chances d'obtenir des réponses adéquates.

    Que ça te plaise ou non, c'est la vérité.

    Citation Envoyé par kouack Voir le message
    ps : c'est pas parce que j'ai du mal ave du c++ que je suis nul
    Il vraiment faut que tu te calmes, là.

    Je n'ai jamais dis que tu étais nul (que tu ai du mal en C++ ou pas).

    Par contre :
    • s'exprimer de façon inintelligible, parfois en oubliant même certains mots (tu te relis?)
    • devoir de se faire tirer les vers du nez avant d'expliquer clairement l'énoncé du problème
    • demander quel en-tête doit être inclus pour un_identificateur quand la première réponse de Google en cherchant juste un_identificateur donne la réponse
    • ne pas indenter le code qu'on poste
    ça, c'est nul.

    Citation Envoyé par kouack Voir le message
    heuresement que je ne t'ai pas attendu savoir ce que veut dire indentation
    Alors montre-le, et poste du code correctement indenté.

  8. #48
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    corrector a raison, tu dois faire un petit effort.
    Par exemple pour ta dernière question, je ne peux pas deviner ce qui ne va pas. Il faut que tu places un point d'arrêt au début du main par exemple et que tu avances pas à pas en regardant si l'ouverture du fichier se passe bien par exemple, si tu recupères les bons mots etc.
    Ton outil de développement doit disposer d'un débuggeur, j'imagine.

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

Discussions similaires

  1. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02
  2. Problème avec memory mapping
    Par gemai dans le forum C
    Réponses: 13
    Dernier message: 04/07/2003, 09h50
  3. Multiple Count
    Par Antichoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2003, 11h19
  4. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41
  5. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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