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 :

besoin d'aide fonction avec fichier (debutant)


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 4
    Points
    4
    Par défaut besoin d'aide fonction avec fichier (debutant)
    bonjour tout le monde

    voila je ne comprend pas comment faire:

    j'ai un fichier sur ma clef usb ( E:\fichier.txt), dessu il y a des info sur des clients comme ceci:

    -----------------------------------------------------------------------
    Dupont Paul 24 N 12 01 05 1200 10 13 120
    Delporte Jean 23 N 10 01 05 1200 10 13 120
    ...
    -----------------------------------------------------------------------


    et en fait je doit faire un sous-programme Telecharger_Fichier(???). Ce sous-programme doit copier dans un tableau TabClient tous les clients figurant dans un fichier dont le nom est passé en paramétre puis afficher le nombre total de clients.

    voila je ne comprend rien.

    j'ai fais un prog. il m'a l'air correct mais quand je le lance il m'indique qu'il y a 96 client alors que dans le fichier il n'y en a que 3... (je suis meme pas sur que c'est ce qu'il demande, j'ai pas trop compris ce qu'ils veulent)

    voila ce que j'ai fais:
    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
     
    #include <vector>
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    struct Identite
    {
           string nomCli;
           string prenomCli;
           int age;
           char statut;
    };
     
    struct DateEmp
    {
           int jour;
           int mois;
           int annee;
    };
     
    struct Client
    {
           DateEmp dateE;
           Identite id;
           int montantEmp;
           int tauxInteret;
           int duree;
           int montantInteret;
    };
     
    void Telecharger_Fichier(string fichier);
     
    int main()
    {
         string ficClient;
     
         cout << "Entrer l'adresse du fichier client: ";
         cin >> ficClient;
         cout <<endl;
     
         Telecharger_Fichier(ficClient);
     
        return 0; 
    }
     
    void Telecharger_Fichier(string fichier)
    {    
         int i;
         char pause;
         vector<string> TabClient;
     
         ifstream ficent(fichier);
     
         if (!ficent)
         {
                    cout << "ouverture impossible...\n";
                    return;
         }
         else
         {
             i=0;
             ficent >> TabClient[i];
     
             while(!ficent.eof())
             {
                                i++;
                                ficent >> TabClient[i];
             }
         }
     
             cout << "\nNombre de clients: " << i;
             cin >> pause;
             cout << endl;
     
         ficent.close();
    }
    donc voila au debut j'avais fais avec des char et des tableau comme ma prof nous a montré mais a la place de me renvoyé 3 pour le nombre de clients il me renvoyé 96.

    et là j'ai remplacé les char par des string et les tableau par des vector mais comme je n'ai jamais vu sa en cours j'ai essayé de me renseigné sur le net mais mon code ne se compile pas

    si quelqu'un peut m'aider ce serait cool parceque là sa fait une semaine que je suis dessus et pas moyen de trouver (et il me reste encore 11 fonction a faire) de plus je sais meme pas si ce que je fais correspond bien a ce que demande l'enoncé
    je suis vraimetn en galére...

  2. #2
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    l'ouverture d'un flux ifstream avec un string, ce n'est pas bon
    il faut passer par la fonction c_str de string pour obtenir un char *
    les fonctions de string
    http://www.cppreference.com/cppstring/

    PS: tu peux aussi poster les erreurs détectées par le compilo, ce sera plus clair

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut

    lorsque tu lis dans le fichier, tu ne récupères pas une ligne à chaque fois, mais un "mot" à chaque fois.

    Dupont Paul 24 N 12 01 05 1200 10 13 120

    devient

    "Dupont" "Paul" "24" "N" "12" "01" "05" "1200" "10" "13" "120"

    donc si tu as 3 clients, tu n'auras pas i=3, mais i=33 en principe.


    Enjoy yourself !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    là c'est bon mon programme fonctionne, mais je doit supprimer tout les espaces dans mon fichier, il est possible de laisser les espace et que le programme me donne bien 3 clients ?

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut


    Comment faire pour lire un fichier ligne par ligne ?

    mais ce n'est pas ce qui est demandé.

    tu dois charger ton fichier dans les structures adaptées : identite, dateemp, client

    il faudra envisager la surcharge des opérateurs de flux << et >> dans tes structures afin de simplifier la lecture du fichier.



    Enjoy yourself !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    tu pense ?
    car on a même pas vu la surcharge d'operateur

    (y a plein de personne qui me dise des choses et je me rencontre qu'on a rien vu (les string, vector, pointeur etc... pas vu))

    parceque si c'est comme tu dit je ne vois pas du tout comment faire on l'a pas vu en cours, pourrait tu me donner un petit exemple histoire de voir comment je doit faire stp ?

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    TabClient doit contenir des "Client" ou des "std::string" ?

    tel que tu as conçu ton programme, tu essaies de remplir TabClient de cette façon :
    vector<string> TabClient
    TabClient[0] > "Dupont"
    TabClient[1] > "Paul"
    TabClient[2] > "24"
    ...
    ne faudrait-il pas le remplir comme ça :
    vector<Client> TabClient
    TabClient[0] > Client(Dupont Paul, 24 ans, statut N, ...)
    TabClient[1] > Client(Delporte Jean, ...)
    ...
    une fois le tableau remplit, si tu veux connaitre le nombre de Client :



    Enjoy yourself !

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Je suis trop gentil


    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
    #include <iostream>
    #include <string>
    #include <vector>
    #include <fstream>
     
    using namespace std;
     
    struct Identite
    {
           string nom;
           string prenom;
           int age;
           char statut;
    };
     
    struct Date
    {
    	int d;
    	int m;
    	int y;
    };
     
    struct Client
    {
           Date date;
           Identite id;
           int montantEmprunt;
           int tauxInteret;
           int duree;
           int montantInteret;
    }; 
     
    ostream& operator << (ostream& flux, Date & D)
    {
    	flux << D.d << " " << D.m << " " << D.y;
    	return flux;
    }
     
    istream& operator >> (istream& flux, Date & D)
    {
       flux >> D.d >> D.m >> D.y;
       return flux;
    } 
     
    ostream& operator << (ostream& flux, Identite & I)
    {
       flux << I.nom << " " << I.prenom << " " << I.age << " " << I.statut;
       return flux;
    } 
     
    istream& operator >> (istream& flux, Identite & I)
    {
       flux >> I.nom >> I.prenom >> I.age >> I.statut;
       return flux;
    } 
     
    ostream& operator << (ostream& flux, Client & C)
    {
    	flux << C.id << " " << C.date << " " << C.montantEmprunt << " ";
    	flux << C.tauxInteret << " " << C.duree << " " << C.montantInteret;
       return flux;
    } 
     
    istream& operator >> (istream& flux, Client & C)
    {
    	flux >> C.id >> C.date >> C.montantEmprunt >> C.tauxInteret >> C.duree >> C.montantInteret;
       return flux;
    } 
     
    vector<Client> LireFichier(string filename)
    {
    	ifstream file(filename.c_str());
    	Client client;
    	vector<Client> tabClient;
     
    	if (file)
    		while (file >> client)
    			tabClient.push_back(client);
     
    	return tabClient;
    }
     
    int main ()
    {
    	vector<Client> listeClients = LireFichier("fichier.txt");
     
    	cout << "Nombre de clients : " << listeClients.size() << endl;
     
    	for (int i = 0; i < listeClients.size(); i++)
    		cout << listeClients[i] << endl;
     
    	return EXIT_SUCCESS;
    }


    Enjoy yourself !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    ah oui c'est exactement sa merci beaucoup tu me sauve la vie...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Ici aussi tu as posté,
    tu ne peut pas essayé de cherhcer par toi même en plus de sa, si tu as des sales ou des moyennes notes en C++, sa va faire bizzar a la prof que tu te mettent a utiliser les vector etc...

    Comme tu voit tu ne comprend rien (je sais que ce n'est pas de ta faute je suis aussi au stid pour l'instant, mais bon en même temp je pense que la prof nous donne pas une formation complete en c++ parceque c'est pas censé être le but) moi je conseille d'apprendre le c++ par toi même (si la programmetion t'interesse bien sur) car tout ce que la prof dit ne sont pas toujours des choses a faire ou alors il y a une autre technique plus fiable

    sinon benle code de bigboomshakala est trés bien.
    Enfin y a plusieur facon de faire mais c'est la meilleur selon moi (c'est ce que j'ai fais avec quelque difference)
    mais si tu ne comprend rien cela ne sert a rien de recopier betement

    ps: tes trop gentil de lui avoir fais son boulot mais tu n'aurais pas du,si il recopie comme un cretin la prof va croire qu'il a recopié sur moi ou je ne sais quoi,
    De plus que franchement tu verait le niveau en c++ t'hallucine il est vraiment pas trop compliqué, on ne voit pas certaine notion qui sont vraiment puissante quand tu les maitrise tel que les pointeurs etc... qui là compliquerai déja un peu plus.

    vivement que je me casse en info.

Discussions similaires

  1. [FatJar] Besoin d'aide pour définir fichier jnlp
    Par CaptainT dans le forum JWS
    Réponses: 11
    Dernier message: 24/03/2009, 14h29
  2. besoin d'aide sur les fichiers
    Par lenetfm dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/03/2008, 11h02
  3. Besoin d'aide écriture dans fichier
    Par boniface dans le forum Modules
    Réponses: 3
    Dernier message: 29/01/2007, 18h06
  4. Réponses: 11
    Dernier message: 07/09/2006, 02h00
  5. Besoin d'aide lié à un fichier xml et un tableau a charger..
    Par jjs dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2005, 14h03

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