Exercice fichier

Bonjour,
1. Définir un stock de produits. Un stock se caractérise par son nom, adresse, le nombre d’unités de stockage réservées pour chaque catégorie. 2. Afficher les informations concernant chaque produit (nombre , Marque, Prix unitaire à l’achat, etc.) 3. Ajouter, modifier et supprimer un produit. 4. Ajouter, modifier et supprimer une catégorie. 5. Afficher la capacité globale de stockage encore disponible.

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    salut,
    tu veux pas faire tes devoirs tout seul ?
    1. Contributeur
      résolu donc ....
      edit: finalement non, y'a effort de la personne en essayant de comprendre
    2. salut mushu,
      non, j'essaie mais j'avais des problémes au nivau de compilation et aussi l'exercice est compliqué j'ai pas bien compris
    3. #include <stdio.h>
      #include <stdlib.h>
      
         typedef struct
          {
          char mq[50]; /*marque d'un produit*/
          char taille[50]; /*taille*/
          int prix,nbr; /*nombre de produit de stockage reservees*/
      
          } pr ; /*produit */
         typedef struct
          {
          pr nom[100];
          char ad [100]; /* adresse de chaque catégorie*/
          int nbsv; /*le nombre d'unités de stockage reservees*/
          int nbst; /*le nombre maximum d'unités de stockage*/
      
          }stock;
        /*---dédinir un stock de produit---*/
      void def (stock st[] ,int *N)
      {
          FILE * f=fopen("stock.txt","a");
          int i;
          if(f!=NULL)
            {printf("donner nombre de categories ");
             scanf("%d",N);
             do {
                for (i=0;i<*N;i++)
                  {
                  printf("donner le nom du %d eme categorie \n",i);
                  scanf("%s",st[i].nom);
                  fprintf(f,"%s",st[i].nom);
                  printf("donner l'adresse du %d eme categorie \n",i);
                  scanf("%s",st[i].ad);
                  fprintf(f,"%s",st[i].ad);
                  printf(" donner le nombre d'unités de stockage reservees \n",i);
                  scanf("%d",st[i].nbsv);
                  fprintf(f,"%d",st[i].nbsv);
                  printf("donner le nombre maximum d'unités de stockage \n ");
                  scanf("%d",st[i].nbst);
                  fprintf(f,"%d",st[i].nbst);
                  }
                }
                  while(st[i].nbsv<st[i].nbst);
              }
             fclose(f);
      }
        /*---fonction modifier---*/
      void modife (stock st[])
        { char nm [20];
          int i=0;
          FILE*f=fopen("stock.txt","r+");
          rewind(f);
         if(f==NULL)
           printf("fichier null");
         else
            { while(feof(f)!=0)
                { printf("donner le categorie a modifie : \n");
                  scanf(f,"%s",nm);
                  if(strcmp(nm,st[i].nom)==0)
                     {st[i].nom=nm;
                      printf("le catégorie a été modifier %s",st[i].nom);
                     }
                i+=1;
              fclose(f);
                }
             }
      
        }
      /*---fonction supprime---*/
      void supprime(stock st[])
      {
      
      }
        /*---affichage des informations de chaque produit---*/
      void affiche ( pr t[],stock st [],int *N)
      
      { FILE * f=open("produit.txt","a");
          int j,i ;
          if(f!=NULL)
          {  for (j=i ; j<*N ; j++)
             { printf("pour le produit suivant : %s\n", st[j].nom);
               printf("marque:\n");
               scanf("%s",t[j].mq);
               fprintf(f,"%s",t[j].mq);
               printf("taille:\n");
               scanf("%s",t[j].taille);
               fscanf(f,"%s",t[j].taille);
               printf("prix:\n");
               scanf("%d",t[j].prix);
               fscanf(f,"%d",t[j].prix);
               printf("nombre:\n");
               scanf("%d",st[j].nbsv);
               fscanf(f,"%d",st[j].nbsv);
               }
               fclose(f);
          FILE * f=open("produit.txt","r");
          int j;
          if(f!=NULL)
          {  for (j=0 ; j<*N ; j++)
             { fscanf(f,"%s",t[j].mq);
               printf("marque %s\n",t[j].mq);
               fscanf(f,"%s",t[j].taille);
               printf("taille:%s\n",t[j].taille);
               fscanf(f,"%d",t[j].prix);
               printf("prix:%d\n",t[j].prix);
               fscanf(f,"%d",st[j].nbsv);
               printf("nombre:%d\n",st[j].nbsv);
               }
          }
          fclose(f);
      }
      }
      
      int main()
      {
          stock st[100];
          pr   t[100];
          int n;
          ajouter(st,&n);
          affiche(t,st,&n);
      
          return 0;
      }


      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici : ICI

      Merci d'y penser dans tes prochains messages.
    4. Contributeur
      @zoeymattbonjour, tout cela fonctionne bien?