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 de lire du fichier {Les listes chaînées }


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Problème de lire du fichier {Les listes chaînées }
    utilisé structuré pour entrer les informations pour le fichier
    Ce code
    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
     
    struct produit
    {
        char nom[30];
        char famille[30];
        int prix;
    };
     
     
    void add_produit (void)
    {
    struct produit add;
    cout <<"Entrez le nom du produit\n";
    cin >>add.nom;
    cout <<"Entrez le nom de la famille de produits\n";
    cin >>add.famille;
    cout <<"Entrez le prix du produit\n";
    cin >>add.prix;
     
    ofstream f ("stock.txt",ios::app);
    if (!f.is_open())
    cout << "Impossible d'ouvrir le fichier en écriture !" << endl;
    else
    f << add.nom << "  " << add.famille << "  " << add.prix <<"\n";
     f.close();
     
     }
    comment lire les produits en Les listes chaînées ?
    Comment puis-je supprimer un produit ou changer le prix d'un produit?

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    utilisé structuré pour entrer les informations pour le fichier
    comment lire les produits en Les listes chaînées ?
    FrenchNotRecognizedException.


    Plus sérieusement, ta structure n'est simplement pas une liste chainée. Tu peux utiliser std::list<produit> puis utiliser la doc. Sinon tu dois stocker un pointeur dans produit vers le produit suivant mais ce n'est pas vraiment aussi simple.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci
    J'ai besoin d'expliquer

  4. #4
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Bon, déjà tu stockes tes produits dans un fichier, pour chaque produit tu l'ajoutes au fichier, ce qui est long et pas très efficace. Le mieux c'est de travailler avec une structure de donnée "intermédiaire" comme une liste ou un vecteur. Le mieux c'est encore d'utiliser un vecteur pour pouvoir rechercher rapidement un produit.

    Dans ton application tu devras prévoir une fonction qui charge le fichier dans cette structure au début. Puis une autre option qui demande à l'utilisateur de sauvegarder dans le fichier. Et seulement à ces deux moments là tu utilises un fichier. Pour ce qui est manipulation de la structure et ajout, ... tu 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
     
    #include <vector>
     
    // ...
     
    std::vector<produit> tous_mes_produits = std::vector<produit>();
     
    charger_les_produits_du_fichier(tous_mes_produits);
     
    while( ON VEUT FAIRE QQL CHOSE)
    {
      ajouter_produit(tous_mes_produits);
      supprimer_produit(tous_mes_produits);
      modifier_produit(tous_mes_produits);
    }
     
    sauvegarder_les_produits_dans_fichier(tous_mes_produits);
    Ensuite tu peux utiliser ces fonctions sur vector : documentation.

    Par exemple pour supprimer tu feras quelques chose comme ça :

    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
     
    void supprimer_produit(std::vector<produit> &tous_mes_produits) // NOTE le "&" très important, ca veut dire que tu passes une référence et non une copie du vecteur.
    {
      std::cout << "Quel produit voulez-vous supprimer ? Entrer le nom : ";
      std::string nom_produit;
      std::cin >> nom_produit;
     
      // Recherche du produit dans le vecteur
      bool produit_trouve = false;
       int pos_produit = 0;
      for(int i=0; !produit_trouve && i < tous_mes_produits.size(); ++i)
      {
        if(tous_mes_produits[i].nom == nom_produit)
        {
           produit_trouve = true;
           pos_produit = i;
        }
      }
     
      // La suppression :
      if(produit_trouve)
        tous_mes_produits.erase(tous_mes_produits.begin() + pos_produit);
      else
        std::cout << "Produit non trouvé" << std::endl;
    }
    Voila et pour ajouter regarde du coté de "push_back" et pour modifier c'est pareil que supprimer le début, pour la fin utilise simplement les tous_mes_produits[pos_produit].nom pour modifier le nom par exemple.

    Bonne chance.

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci.
    ce tp a pour but la gestion de stock d'un magasin. le magasin vent plusieurs types des produits et derniers sont regroupes en divers familles ( par exemple la famille legume regroupe les differents types de legumes comme tomate pomme de terre carotte ... etc)
    chaque produit est specifie donc par un label la famille de produit le prix unitaire la quantite dans stock une date de peremption. ces donnees sont stockees dans un fichier.

    travail demande
    ecrire un programme pour la gestion ce stock . en utilisant votre programme on peut ajouter d'autres produits au fichier signaler une insuffisance dans le stock pour un produit
    si sa quantite est au dessous d'un parametre donne ( le parametre est specifique pour chaque produit) ajouter une quantite a un produit qui existe soustraire une quantite vendues de la quantite globale change le prix d'un produit supprimer un produit de fichier recherche un produit affiche les informtion d'un produit affiche les produits d'une famille

    remarqouns que l'acces a un fichier est lent et on suppose que les 10 derniers produits manipules ont la chance d'etre reutilises ulterieurement. afin d'accelerer le traitement on propose de maintenir toujours les 10 derniers produits en memoire centrale donc on memoire on commence notre recherche dans la memoire centrale si le produit n'existe pas dans la memoire on le charge depuis la memoire secondaire.

Discussions similaires

  1. Problème avec les listes chaînées
    Par Kawada dans le forum C
    Réponses: 2
    Dernier message: 06/05/2012, 17h20
  2. Réponses: 23
    Dernier message: 14/03/2009, 15h57
  3. Problème avec les listes chaînées
    Par yous18 dans le forum C
    Réponses: 38
    Dernier message: 25/10/2007, 22h30
  4. petit problème sur les listes chaînées
    Par poche dans le forum C
    Réponses: 14
    Dernier message: 19/03/2007, 16h53
  5. [TP 7] Problème avec les listes chaînées (error 202)
    Par thelinekioubeur dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 06/12/2006, 23h15

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