Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur

geston de stock programtion c

    26 octobre 2019 à 21:09:59

    Bonjour j'ai un code qui ne compile pas merci de m'aider.
    voici le problème
    Une société vous confie le développement d’une application pour la gestion de ses dépôts.
    Un dépôt est caractérisé par:
    -un identifiant (entier).
    -Ville (chaîne de caractères)
    -type des produits à stocker (chaîne de caractères : Vestimentaires, alimentaires, pièces de rechanges)
    -nombre de rayon du dépôt.
    -un tableau contenant le nombre de produits par rayon.
    -le nom du responsable du dépôt.
    A) Définir les structures nécessaires.
    B) Implémenter un programme qui permet via un menu de :
    1. Ajouter un nouveau dépôt. Le nombre de produits de chaque rayon d’un nouveau dépôt ajouté doit être initialisé à zéro.
    2. Ajouter des produits dans le premier rayon vide d’un dépôt choisi par l'utilisateur, tout en sachant que le nombre de produit par rayon ne peut pas dépasser 200.
    3. Lister les dépôts contenant des produits de type saisi par l’utilisateur.
    voici le code que j'ai fait 
    <pre class="brush: cpp;">typedef struct depot
    { int id,nbr[2];
    char ville[20],typ[20],res[20];
    }
    depot;
    typedef struct produit
    { int nbp; }
    produit;
    int main()
    { int choix,j,i=0;
    depot Tab[20];
    produit tab[200];
    char prod1[10];
    do {
        do
       {
        printf("1.Ajouter un nouveau depot\n");
       printf("2.Ajouter des produits dans le premier rayont\n");
       printf("3.Lister les depots \n");
       printf("4.Afficher le nom du responsable et la ville du depot\n");
       printf("5.Modifier le responsable \n");
       printf("6.Calculer le nombre de depots \n");
       printf("7.Afficher les depots où le nombre de produits\n");
       printf("8.Supprimer le premier depot vide\n");
       scanf("%d",&choix);}
        while (choix<0 || choix>8);
    switch (choix)
    {
    case 1:
    printf("donner l'identfiend n");
    scanf("%d",&Tab[i].id);
    printf("donner nombre rayon/ n");
    scanf("%d",&Tab[i].nbr);
      fflush(stdin);
    puts("donner la ville\n");
    gets(Tab[i].ville);
    puts("donner nom responsable\n");
    gets(Tab[i].res);
    puts("donner type de produit\n");
    gets(Tab[i].typ);
    for(j=0;j<Tab[i].nbr;j++)
    {printf("nombre de produits par rayons",j+1);
    scanf("%d",&Tab[j].nbr);}
    i++;
    break;
    case 2:
        printf("donner nombre rayon/ n");
    scanf("%d",&Tab[i].nbr);
        if (Tab[i].nbr==1);
      {
    for(j=0;j<200;j++)
    {printf("donner les produits ");
    scanf("%d",&tab[j].nbp);}
    break;
    case 3:
        printf("donner le  type de produit ");
    scanf("%s",&prod1);
    for(j=0;j<i;j++)
    {if (strcmp(prod1,Tab[i].typ)==0)
    printf("les depots %d  choisi %d,%d%,%s,%s%",Tab[i].id,Tab[i].nbr,Tab[i].ville,Tab[i].res);
     else
            printf("le depot n'existe pas");
    }
    mais il fonctionne pas quel sont les erreurs
    </pre>

    -
    Edité par sarah00001 26 octobre 2019 à 22:19:34

    • Partager sur Facebook
    • Partager sur Twitter
      26 octobre 2019 à 21:22:04

      sarah00001 a écrit:

      mais il fonctionne pas 

      On pourrait avoir droit à un indice ?

      (Par exemple une description du problème. La base, quoi. Sinon seuls les télépathes pourront répondre, mais ils sont peu nombreux sur ce forum.)

      -
      Edité par robun 26 octobre 2019 à 21:22:25

      • Partager sur Facebook
      • Partager sur Twitter
        26 octobre 2019 à 21:40:34

        le problème que je sais pas ou le problème exactement dans mon code .j'ai posté le but de programme et mon code . je veux si quelqu’un  peut m' aider à corriger le code . merci
        • Partager sur Facebook
        • Partager sur Twitter
          26 octobre 2019 à 22:09:09

          Bonjour,

          Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
          Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

          Pour plus d'informations, nous vous invitons à lire les règles générales du forum

          Merci de colorer votre code à l'aide du bouton Code

          Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

          Manque de Politesse

          Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

          Mauvais titre

          Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

          Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

          De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

          Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

          Pour modifier votre titre, éditez le premier message de votre sujet.

          (titre originel : c programmation)

          Liens conseillés

          • Partager sur Facebook
          • Partager sur Twitter
            26 octobre 2019 à 22:30:46

            sarah00001 a écrit:

            le problème que je sais pas ou le problème exactement dans mon code .j'ai posté le but de programme et mon code . je veux si quelqu’un  peut m' aider à corriger le code .

            C'est en effet une bonne chose d'avoir posté le but du programme. Mais il manque la description du problème. Pas dire est le problème, mais quel est le problème. Le décrire. « Il fonctionne pas » ne veux rien dire. Une description, c'est quelque chose comme :

            − Le programme ne compile pas et m'envoie ce message d'erreur que je ne comprends pas : <le message>.

            − La saisie des choix ne se fait pas : il affiche le message mais n'attend pas que je tape un nombre.

            − La liste affiche tous les produits sans tenir compte du type saisi .

            (en détaillant un peu plus quand même !)

            -
            Edité par robun 26 octobre 2019 à 22:35:51

            • Partager sur Facebook
            • Partager sur Twitter
              27 octobre 2019 à 0:49:16

              sarah00001 a écrit:

              j'ai un code qui ne compile pas merci de m'aider.

              Effectivement il y a des accolades mal placées.

              un do sans le while qui va avec !...

              Aussi, on ne peut pas afficher un tableau entièrement d'un seul coup avec un seul printf...

              • Partager sur Facebook
              • Partager sur Twitter
                27 octobre 2019 à 7:15:15

                Ma voiture ne marche pas bien. Pouvez vous me dire pourquoi ?

                -
                Edité par michelbillaud 27 octobre 2019 à 7:15:59

                • Partager sur Facebook
                • Partager sur Twitter
                  27 octobre 2019 à 10:51:18

                  Finalement je viens de recopier le programme pour le compiler, histoire d'avancer... Il y a plein de petites erreurs de syntaxe, la plupart d'entre elles étaient indiquées par des warnings. sarah00001 : si ce n'est pas fait, active les warnings (comment ? ça dépend du compilateur et de l'IDE et comme on n'a pas les infos...)

                  Quelques exemples :

                  truc.c:36:7: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int (*)[2]’ [-Wformat=]
                   scanf("%d",&Tab[i].nbr);
                         ^

                  Celle-là est plus sérieuse. Le format ne convient pas pour la variable. En fait c'est peut-être la variable qui ne convient pas pour le format. Effectivement, 'nbr' désigne un tableau de 2 'int', pas un 'int' seul (je ne sais pas si c'est normal).

                  truc.c:44:10: warning: comparison between pointer and integer
                   for(j=0;j<Tab[i].nbr;j++)
                            ^

                  À nouveau le même problème : le champ 'nbr' est un tableau de 2 'int'. On compare 'j' avec lequel des deux ?...

                  truc.c:45:9: warning: too many arguments for format [-Wformat-extra-args]
                   {printf("nombre de produits par rayons",j+1);
                           ^
                  

                  Ça, c'est une des nombreuses petites erreurs d'inattention : tu as oublié de mettre un %d dans le 'printf'.

                  Ensuite on retrouve plusieurs fois le problème du 'nbr' : alors que tu l'as déclaré comme tableau de 2 'int', il semble que tu l'utilises systématiquement, dans le programme, comme un 'int' seul.

                  truc.c:52:19: warning: comparison between pointer and integer
                       if (Tab[i].nbr==1);
                                     ^
                  truc.c:52:23: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
                       if (Tab[i].nbr==1);
                                         ^
                  

                  Là on cumule les deux problèmes : le tableau 'nbr' et la distraction (un point-virgule en trop).

                  truc.c:60:7: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[10]’ [-Wformat=]
                   scanf("%s",&prod1);
                         ^
                  

                  Un format qui n'est pas adapté à la variable ou le contraire : 'prod1' est une chaîne de caractères c'est-à-dire un tableau (particulier), il faut donc indiquer 'prod1' tout court, sans le &, dans le 'scanf'.

                  truc.c:63:8: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
                   printf("les depots %d  choisi %d,%d%,%s,%s%",Tab[i].id,Tab[i].nbr,Tab[i].ville,Tab[i].res);
                          ^
                  

                  De nouveau le souci avec 'nbr' déclaré comme un tableau mais que tu utilises comme un 'int' seul. (Note que le compilateur est très précis : il indique que le problème vient du 3è argument et décrit le problème.)

                  En fait cette simple ligne a d'autres soucis :

                  truc.c:63:8: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘char *’ [-Wformat=]
                  truc.c:63:8: warning: unknown conversion type character ‘,’ in format [-Wformat=]
                  truc.c:63:8: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
                  truc.c:63:8: warning: spurious trailing ‘%’ in format [-Wformat=]
                  

                  Ça vient de plusieurs erreurs de distraction :

                  − tu fais afficher cinq formats (les dépôts, puis les quatre après « choisis » alors qu'il n'y a que quatre arguments ;

                  − il y a deux % de trop (%d% au milieu au lieu de %d, du coup il se demande ce qu'est ce %,) (et %s% à la fin au lieu de %s, du coup il se demande ce qu'est ce %").

                  Et ainsi de suite.


                  (C'est fou le nombre d'erreurs qui ne sont visibles qu'en affichant les warnings...)

                  -
                  Edité par robun 27 octobre 2019 à 10:59:25

                  • Partager sur Facebook
                  • Partager sur Twitter

                  erreur

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown