Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.



  1. #1
    gravitonlibre

    Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.


    ------

    Bonjour,
    j'essaie de faire un programme qui va identifier des motifs (paterns) répétitifs dans une chaine de texte de 3000 caractères ou plus.

    Les contraintes:
    - Les motifs ont une longueur pré-déterminée par l'utilisateur, ex: 7 caractères.
    - La chaine de caractères se retrouve dans un fichier externe au programme.
    - Lorsque le programme identifie une combinaison de n caractères, celui-ci cherche des motifs identiques. À chaque fois qu'il en trouve un nouveau, il en tient compte dans la fréquence d'apparition du mot (si on voit 2 fois le mot, la fréquence est 2).
    - Dans un second fichier externe, le programme va transférer les n (le n est déterminé préalablement par l'utilisateur) motifs les plus fréquents ainsi que la fréquence d'apparition dans l'ordre décroissant.
    -Après 3000 caractères le programme cesse de chercher des motifs
    --------------------------------------------------------------------------
    1)J'aimerais savoir comment lire seulement les n premiers caractères du fichier texte.
    2)Pourquoi le test d'ouverture du fichier de sortie ne peut pas afficher de message d'erreur lorsque que je fais une erreur dans l'entrée du nom du fichier? (Pourtant le test pour le fichier d'entrée fonctionne...)
    Voici ce que j'ai fait:

    Code:
    #include <iostream>
    #include <string>
    #include <fstream>     // Utile pour la manipulation de fichiers.
    #include <cstdlib>     // Permet d'utiliser la fonction c_str().
    using namespace std;
    
    
    int main()
    {
    
        /***************************************************
        *                                                  *
        *       Entrees du programme                       *
        *                                                  *
        ***************************************************/
    
    
        // Declaration des constantes
        const int Nb_Maximal_Caracteres_Consideres = 3000;  // Nombre maximal de caracteres dans la chaine de
                                                            // texte a verifier lors de la recherche de motifs.
    
        // Declaration des variables
          string Nom_Du_Fichier_Entree, // Nom du fichier d'ou provient la chaine de caracteres.
                 Nom_Du_Fichier_Sortie; // Nom du fichier ou sera transfere les motifs et frequences des motifs.
    
    
        int Longueur_Des_Motifs_Recherches, // Longueur des motifs recherches dans la chaine de caracteres.
            Frequence_Minimale_Apparition,  // Frequence minimale d'apparition d'un motif dans la chaine de caracteres.
            Nb_Maximal_Motifs_Frequents;    // Nombre maximal de motifs les plus frequents a afficher dans le fichier de sortie.
    
        ifstream ins;          // ins est un flux de donnees d'entree.
        ofstream outs;         // outs est un flux de donnees de sortie.
    
    
        /***************************************************
        *                                                  *
        *       Lecture des entrees                        *
        *                                                  *
        ***************************************************/
    
        cout<<"De quel fichier sera extraite la chaine de caracteres a analyser?: "<<endl<<endl;
        cin>>Nom_Du_Fichier_Entree;
        ins.open( Nom_Du_Fichier_Entree.c_str() ); // Associe Nom_Du_Fichier_Entree avec le stream ins.
                                                   // La fonction convertit la chaine de caracteres dans Nom_Du_Fichier_Entree
                                                   // en une chaine C.
    
        // Cas d'erreur lors de l'ouverture du fichier d'entree.
        if (ins.fail() )
        {
            cerr<< "*** ERREUR: Impossible d'ouvrir le fichier " << Nom_Du_Fichier_Entree
                << " pour l'extraction de donnees." << endl;
            return EXIT_FAILURE;  // Retour de l'erreur dans l'ouverture dans le fichier.
        }
    
        cout<<endl<<"Dans quel fichier les motifs et leur frequence seront-il transferes?: "<<endl<<endl;
        cin>>Nom_Du_Fichier_Sortie;
        outs.open( Nom_Du_Fichier_Sortie.c_str() ); // Associe Nom_Du_Fichier_Sortie avec le stream outs.
                                                   // La fonction convertit la chaine de caracteres dans Nom_Du_Fichier_Sortie
                                                   // en une chaine C.
    
       // Cas d'erreur lors de l'ouverture du fichier de sortie.
    
    
       /* ERREUR: CE SEGMENT DE CODE N'AFFICHE PAS LE CODE D'ERREUR!
        if (outs.fail())
        {
            cerr<< "*** ERREUR: Impossible d'ouvrir le fichier " << Nom_Du_Fichier_Sortie
                << " pour l'insertion de donnees." << endl;
            return EXIT_FAILURE;  // Retour de l'erreur dans l'ouverture dans le fichier.
        }
    
    
    
        */
    
        cout<<"Quelle est la longueur des motifs recherches?: "<<endl<<endl;
        cin>>Longueur_Des_Motifs_Recherches;
    
        cout<<"A partir de quelle frequence un motif sera-t-il considere?: "<<endl<<endl;
        cin>>Frequence_Minimale_Apparition;
    
        cout<<"Combien de motifs les plus frequents seront transferes dans le fichier sortie?: "<<endl<<endl;
        cin>>Nb_Maximal_Motifs_Frequents;
    
    
        return 0;
    }

    -----
    Dernière modification par JPL ; 20/03/2010 à 18h53.

  2. Publicité
  3. #2
    gravitonlibre

    C++: Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.

    Pour ceux qui n'avaient pas compris le programme est en C++, je crois avoir oublié de le précisé.

  4. #3
    Jack
    Modérateur

    Re : Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.

    Tu pourrais utiliser les balises codes afin de faire apparaitre l'indentation du programme?

    Parce que sinon, c'est trop pénible à lire.

    A+

  5. #4
    yoda1234

    Re : Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.

    Citation Envoyé par Jack Voir le message
    Tu pourrais utiliser les balises codes afin de faire apparaitre l'indentation du programme?

    Parce que sinon, c'est trop pénible à lire.

    A+
    Pour préciser un peu: Dans l'éditeur de texte avancé, la balise "CODE" est symbolisée par ceci:
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  6. A voir en vidéo sur Futura
  7. #5
    JPL
    Responsable des forums

    Re : Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.

    Dans un accès de bonté j'ai mis la balise Code.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  8. #6
    Jack
    Modérateur

    Re : Trouver des "paterns" de caractères dans un fichier de 3000 caractères ou plus.

    Dans un accès de bonté j'ai mis la balise Code.
    Ton bon cœur te perdra

    2)Pourquoi le test d'ouverture du fichier de sortie ne peut pas afficher de message d'erreur lorsque que je fais une erreur dans l'entrée du nom du fichier? (Pourtant le test pour le fichier d'entrée fonctionne...)
    et pourquoi devrait-il afficher un message d'erreur? Si le fichier n'existe pas, il est créé.

    1)J'aimerais savoir comment lire seulement les n premiers caractères du fichier texte.
    Je trouve qu'il est plus simple de lire une ligne entière et d'utiliser ensuite toute la puissance de la classe string pour la traiter.

    A+

  9. Publicité

Discussions similaires

  1. Réponses: 14
    Dernier message: 29/10/2009, 13h24
  2. comment convertir un fichier "TIF" en "JPEG"
    Par MG85 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 15/04/2009, 21h21
  3. Réponses: 12
    Dernier message: 24/11/2008, 16h15
  4. Caractères "bizarres" - prononciation
    Par Romain-des-Bois dans le forum Mathématiques du supérieur
    Réponses: 16
    Dernier message: 07/05/2007, 10h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.