structure doublement chainee

Voir le sujet précédent Voir le sujet suivant Aller en bas

structure doublement chainee

Message  don1design le Ven 2 Juil 2010 - 7:51

Bonjour, tout le monde

j'ai ce projet à réaliser mais je n'ai pas assez de temps pour le réaliser.
Pourriez vous bien m'aider ?

En me donnant certains trucs et astuces dont j'aurai besoin pour le réaliser le plus rapidement possible
merci d'avance

voici le projet

Le fichier sevice.txt comporte les données suivantes :
Code:
Impression_noir 10
Impression_couleur 25
Scannarisation 15
Plastification_Petite 20
Plastification_Grande 40
Reliure_Petit 30
Reliure_Grande 50
A noter qu’un tel fichier est édité par le propriétaire de l’entreprise, définissant un nombre se service offerts ainsi que leurs prix.
Exemple : Une scannérisation se fait au prix de 15 gdes. (Scénarisation 15)

Donc lors de l’exécution de l’application, les données des fichiers sont chargées dans des listes chaînées respectives au fin de maximiser le temps d’exécution des transactions.
A noter que pendant l’exécution du programme, le fichier sevice.txt peut être mis à jour ; dans ce cas, on utilisera une option permettant de mettre à jour la liste correspondante.
Etant donné que le fichier sevice.txt est sujet à des modifications, les transactions seront placées dans une liste doublement chaînée et enregistrées au moment voulu dans un fichier transaction_date.txt, où "date" est la date du jour.
Offrir un service quelconque à tout Instant T est une transaction du genre :
Code:
Service
Date/Heure                  Description          Quantité  Prix/Unité    Prix/Total 
22/06/2010 :14 :12 :54  Scannarisation    7     15        105

Utiliser une touche de raccourci pour la sélection du service. Une fois le service sélectionné, on précisera la quantité, puis Enter pour valider la transaction.

Si toutes ces conditions sont respectées, il sera possible d’afficher les unes après les autres, en appuyant sur la touche SpaceBarre, toutes les transactions effectuées pour une date déterminée.






don1design

Messages : 6
Date d'inscription : 02/07/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  -ed- le Ven 2 Juil 2010 - 9:46

Tu as oublié de poster le code avec lequel tu as un problème.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Fichier et list chainee

Message  don1design le Dim 11 Juil 2010 - 19:06

Bonjour, tout le monde

Pouriez vous me dire toute les fonctions et commnades dont j'ai besoin en C pour pouvoir

Creer/editer/sauvegarder/afficher------ un fichier .txt

Charger un fichier dans une liste chainee

Creer/editer/sauvegarder/afficher------ une liste chainee ou doublement chainee

Merci pour votre aide

don1design

Messages : 6
Date d'inscription : 02/07/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  -ed- le Lun 12 Juil 2010 - 14:29

Pour gérer un fichier texte :

http://www.bien-programmer.fr/notes.php#fichiers

Pour gérer une liste chainée (il faut tout écrire 'à la main')

http://www.bien-programmer.fr/listes_chainees.htm

Fait de ton mieux et poste ton code pour commentaires.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  don1design le Dim 18 Juil 2010 - 7:26

Bonjour, tout le monde

j'ai une liste dinformation ds un fichier txt comme suit

Impression_noir 10
Impression_couleur 25
Scannarisation 15
Plastification_Petite 20
Plastification_Grande 40
Reliure_Petit 30
Reliure_Grande 50

jaimerais les charger ds une liste chaine puis ds une liste doublement chainee

pourriez vous bien maider a le faire car mes neurones sont en flammes

merci davance pour votre aide si precieuse

don1design

Messages : 6
Date d'inscription : 02/07/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  -ed- le Dim 18 Juil 2010 - 17:15

don1design a écrit:Bonjour, tout le monde

j'ai une liste dinformation ds un fichier txt comme suit

Impression_noir 10
Impression_couleur 25
Scannarisation 15
Plastification_Petite 20
Plastification_Grande 40
Reliure_Petit 30
Reliure_Grande 50

jaimerais les charger ds une liste chaine puis ds une liste doublement chainee

pourriez vous bien maider a le faire car mes neurones sont en flammes

merci davance pour votre aide si precieuse
Tu as oublié de poster le code qui ne fonctionne pas ...

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  don1design le Dim 18 Juil 2010 - 20:38

je viens de debuter avec
les liste chainee, je ne les maitrise pas donk je sais pas comment my prendre pour le realiser
pourriez vous bien vouloir maider

don1design

Messages : 6
Date d'inscription : 02/07/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  -ed- le Lun 19 Juil 2010 - 1:02

Beaucoup d'infos ici : http://bien-programmer.forum-actif.net/exercices-f3/structure-doublement-chainee-t112.htm#527

Est-il utile que je fasse un copier collé de mon article ?

Commence par les liste chainées simples. Une difficulté à la fois ... Si tu connais déjà, tu n'auras aucun mal à fire les listes chainées doubles ...


_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  don1design le Lun 19 Juil 2010 - 10:06

bonjour, tout monde

j'ai un fichier service.txt qui contient des infos comme suit
Code:

Impression_noir 10
Impression_couleur 25
Scannarisation 15
Plastification_Petite 20
Plastification_Grande 40
Reliure_Petit 30
Reliure_Grande 50

jaimerais charge chaque service plus son tarif dans une liste chainee.
jai ecrit le programme que jai compile avec code::blocks
qui ne me montre aucune erreur mais lorsque je lexecute il se plante
pourriez vous bien maider a trouver lerreur.

voici le code
Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define TAILLE_MAX 100

//les prototypes
int calculNbrDeService();
void chargement();
void affichage();

//les variables globales
int qtyService=0, i;
//services service[qtyService];


//Declaration de la structure SERVICE
typedef struct services services;
struct services
{
    char type[50];
    int tarif;

    struct services *precedent;
    struct services *suivant;
};

//Declation et initialisation de variable structuree
services *debut=NULL;
services *fin=NULL;
services *nouveau;
services *courant;

//FONCTION principale
int main()
{
    int calculNbrDeService();

    printf("Le nombre de service est ");

    qtyService = calculNbrDeService();

    printf("%d", qtyService);
    printf("\nLes service sont\n");

    chargement();
    affichage();

    return 0;
}

//Calcul du nombre de services disponible
int calculNbrDeService()
{
    int nbrService=0;

    FILE* fichier = NULL;
    char chaine[TAILLE_MAX] = "";

    fichier = fopen("service.txt", "r");

    if (fichier != NULL)
    {
        while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // On lit le fichier au complet
        {
            nbrService++; //augmentation du nombre de service
        }
        fclose(fichier);
    }
    return nbrService;
}

//CHARGEMENT des services dans la liste chainee
void chargement()
{
    //CREATION du pointeur FILE
    FILE* fichier = NULL;
    char ttype[50];
    int ttarif;

    //OUVERTURE du fichier service.txt
    fichier = fopen("service.txt", "r");

    //Allocation d. de memoire
    nouveau=(services*)malloc(sizeof(services));
    if(nouveau!=NULL)
    {

        for ( i=0 ; i<qtyService ; i++ )
        {
            fscanf(fichier, "%s %d\n", ttype, &ttarif);
            nouveau->type[0]=&ttype[0];
            nouveau->tarif=ttarif;
            nouveau->precedent=NULL;
            nouveau->suivant=debut;
            debut->precedent=nouveau;
            debut=nouveau;
        }
    }
    fclose(fichier);
}

//Affichage de la liste
void affichage()
{
    courant=debut;//Point de depart
    while(courant!=NULL)
    {
        printf("%s %d", courant->type, courant->tarif);
        courant=courant->suivant;
    }
    getch();
}

don1design

Messages : 6
Date d'inscription : 02/07/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  -ed- le Dim 25 Juil 2010 - 10:57

J'ai arrangé un peu ton code pour qu'il soit lisible et portable :
Code:

#include <stdio.h>
#include <stdlib.h>

#define TAILLE_MAX 100

/* les variables globales */
int qtyService = 0, i;

/* Declaration de la structure SERVICE */
typedef struct services services;
struct services
{
  char type[50];
  int tarif;

  struct services *precedent;
  struct services *suivant;
};

/* Declation et initialisation de variable structuree */
services *debut = NULL;
services *fin = NULL;
services *nouveau;
services *courant;

/* Calcul du nombre de services disponible */
int calculNbrDeService (void)
{
  int nbrService = 0;

  FILE *fichier = NULL;
  char chaine[TAILLE_MAX] = "";

  fichier = fopen ("service.txt", "r");

  if (fichier != NULL)
  {
      while (fgets (chaine, TAILLE_MAX, fichier) != NULL) /* On lit le fichier au complet */
      {
        nbrService++;          /* augmentation du nombre de service */
      }
      fclose (fichier);
  }
  return nbrService;
}

/* CHARGEMENT des services dans la liste chainee */
void chargement (void)
{
  /* CREATION du pointeur FILE */
  FILE *fichier = NULL;
  char ttype[50];
  int ttarif;

  /* OUVERTURE du fichier service.txt */
  fichier = fopen ("service.txt", "r");

  /* Allocation d. de memoire */
  nouveau = (services *) malloc (sizeof (services));
  if (nouveau != NULL)
  {

      for (i = 0; i < qtyService; i++)
      {
        fscanf (fichier, "%s %d\n", ttype, &ttarif);
        nouveau->type[0] = &ttype[0];
        nouveau->tarif = ttarif;
        nouveau->precedent = NULL;
        nouveau->suivant = debut;
        debut->precedent = nouveau;
        debut = nouveau;
      }
  }
  fclose (fichier);
}

/* Affichage de la liste */
void affichage (void)
{
  courant = debut;            /* Point de depart */
  while (courant != NULL)
  {
      printf ("%s %d", courant->type, courant->tarif);
      courant = courant->suivant;
  }
  getchar ();
}

/* FONCTION principale */
int main (void)
{
  printf ("Le nombre de service est ");

  qtyService = calculNbrDeService ();

  printf ("%d", qtyService);
  printf ("\nLes service sont\n");

  chargement ();
  affichage ();

  return 0;
}
Il reste ce défaut :
Code:


-------------- Build: Debug in hello ---------------

Compiling: main.c
Linking console executable: bin\Debug\hello.exe
C:\dev\hello\main.c: In function 'chargement':
C:\dev\hello\main.c:66: warning: assignment makes integer from pointer without a cast
Output size is 62.38 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 1 warnings
Tu cherches à mettre une adresse dans un entier. C'est absurde...

D'autres part, on a pas besoin des ces globales... Les cas où les globales sont indispensables sont rares et avancés...

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: structure doublement chainee

Message  Contenu sponsorisé Aujourd'hui à 21:18


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum