Aidez moi dans mon projet c svp

Résolu
kawtar93 - 5 mai 2013 à 14:59
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 6 mai 2013 à 09:00
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
void Color(int couleurDuTexte,int couleurDeFond);
void Color2(WORD Attributes);
/*définition de la struction d'une matériel*/
typedef struct matrielle{
      int reference;
      char nom[15];
      int quantite;
      int etat ;
      int reparation ;
}materiel;
materiel d;
/*/definition de la struture du stock*/
typedef struct stock
{
      materiel b;
      struct stock *m_suivant;
}stock;
/*/definition de la struture du classe*/
typedef struct classe
{
      int nomber ;
      char nom_prof;
      int type;
      struct classe *m_suivant;
}classe;
/*définition de la structure d'une ligne de reservation */
typedef struct matrielle_reservation
{
        stock *st;
        int quantite_reserver ;
       char date ;
       classe b ;
}matrielle_reservation;

/*/définition de la structure d'une reservation*/
typedef struct reservation
{
        int id_reservation;
        float total_reservation;
       matrielle_reservation tab_materiel[50];
        int nb_matrielle_reservation ;
        char proprietaire[15];
        struct reservation *c_suivant;
        int executer;
}reservation;

stock *p = NULL;
reservation *c = NULL;

/*Fonction pour la création d'un matrielle*/
void creation_matrielle()
{
    system("cls");
     stock *tampon = (stock *)malloc(sizeof(stock));
     printf("\n");
     printf("|--------------------------------\n");
     printf("|\n");
     printf("|\n");
     printf("|");
     printf("|Entrer la reference du matrielle: ");
     scanf("%d",&tampon->b.reference);
     printf("|--------------------------------\n");
     printf("|\n");
     printf("|\n");
     printf("|Entrer le nom du matrielle: ");
     scanf("%s",tampon->b.nom);
     printf("|--------------------------------\n");
     printf("|\n");
     printf("enter l'etat actuall \n");
        scanf("%d",&d.etat);
     printf("|-------------------------------\n");
     if ( p == NULL)
     {
          tampon->m_suivant = NULL;
          p = tampon;
     }
     else
     {
         tampon->m_suivant = p;
         p = tampon;
     }
}

/*Fonction pour la suppression ou la reparation   d'un matrielle*/
void suppresion_matielle()
{
     system("cls");
     int choix, ref_tampon;
     char nom_tampon[15];
     stock *tampon = p;
     stock *tampon2;
     printf("\n");
     printf("-------MENU suppression ou reparation ARTICLE ----\n");
     printf("|------------------------------------\n");
     printf("|-------------Suppression---------- 1\n");
     printf("|------------------------------------\n");
     printf("|----------reparation ------------- 2\n");
     printf("|------------------------------------\n");
     printf("|Entrer votre choix: ");
     scanf("%d",&choix);
     switch (choix)
     {
            case 1:
                 {
                        printf("Entrer la reference du matrielle a supprimer: ");
                        scanf("%d",&ref_tampon);
                        while ((tampon != NULL)&&(tampon->b.reference != ref_tampon))
                        {
                              tampon2 = tampon;
                              tampon = tampon->m_suivant;
                        }
                        if (tampon == NULL)
                           printf("Le matrielle  ne se trouve pas dans le stock\n");
                        else
                        {
                            if ( tampon == p)
                            {
                               p=tampon->m_suivant;
                               free(tampon);
                            }
                            else
                            {
                                tampon2->m_suivant = tampon->m_suivant;
                                printf("Le matrielle  a ete supprimer\n");
                            }
                        }
                 }
                 break;
            case 2:
                 {
                                printf("enter son etat actual\n");
                                printf("enter 0 pour etat ok ");
                                printf("enter 1 pour etat nok ");
                                printf("enter 2 pour etat a supprimer  ");
                                 scanf("%d",&d.etat);
                                if (d.etat==0)
                                   {
                                      printf("ok");}

                                    else if(d.etat==1){
                                       printf(" etat nok  donc on va le reparer il est impossible de le fair reserver dans cette somaine ");
                                    }
                                    else {
                                                                 while ((tampon != NULL)&&(tampon->b.reference != ref_tampon))
                        {



                                tampon2->m_suivant = tampon->m_suivant;
                                printf("Le matrielle a ete supprimer\n");

                                    }
                            }
                        }

                 break;
            default: printf("Erreur de choix ");
                     break;
     }
}

/*Fonction pour la modification d'un matrielle*/
void modification_matrielle()
{
     int choix, ref_tampon;
     char nom_tampon[15];
     stock *tampon = p;
     printf("\n");
     printf("------ MENU MODIFICATION ARTICLE ------\n");
     printf("|------------------------------------\n");
     printf("|Modification par reference ------- 1\n");
     printf("|------------------------------------\n");
     printf("|Modification par nom ------------- 2\n");
     printf("|------------------------------------\n");
     printf("|Entrer votre choix: ");
     scanf("%d",&choix);
     switch (choix)
     {
            case 1:
                 {
                        printf("Entrer la reference du produit a modifier: ");
                        scanf("%d",&ref_tampon);
                        while ((tampon != NULL)&&(tampon->b.reference != ref_tampon))
                        {
                              tampon = tampon->m_suivant;
                        }
                        if (tampon == NULL)
                           printf("Le matielle  ne se trouve pas dans le stock\n");
                        else
                        {    printf("|------------------------------------\n");
                             printf("|matrielle reference : %d\n",tampon->b.reference);
                             printf("|------------------------------------\n");
                             printf("|Le nom du matrielle: %s\n",tampon->b.nom);
                             printf("|------------------------------------\n");
                             printf("|La quantité du matrielle: %d\n",tampon->b.quantite);
                             printf("|------------------------------------\n");
                             printf("Entrer le nom du matrielle: ");
                             scanf("%s",tampon->b.nom);
                             printf("Entrer la quantité du matrielle: ");
                             scanf("%d",&tampon->b.quantite);

                             printf("Le matrielle a ete modifier\n");
                        }
                 }
                 break;
            case 2:
                 {
                        printf("Entrer le nom du produit a modifier: ");
                        scanf("%s",nom_tampon);
                        while ((tampon != NULL)&&(strcmp(tampon->b.nom,nom_tampon)!=0))
                              tampon = tampon->m_suivant;
                        if (tampon == NULL)
                           printf("Le matrielle ne se trouve pas dans le stock\n");
                        else
                        {     printf("|-------------------------------\n");
                             printf("|matrielle reference : %d\n",tampon->b.reference);
                             printf("|-------------------------------\n");
                             printf("|Le nom du matrielle: %s\n",tampon->b.nom);
                             printf("|-------------------------------\n");
                             printf("La quantité du matrielle: %d\n",tampon->b.quantite);

                             printf("|-------------------------------\n");
                             printf("|Entrer le nom du matrielle: ");
                             printf("|-------------------------------\n");
                             scanf("%s",tampon->b.nom);
                             printf("|Entrer la quantité du matrielle: ");
                             printf("|-------------------------------\n");
                             scanf("%d",&tampon->b.quantite);



                        }
                 }
                 break;
            default: printf("Erreur de choix ");
                     break;
     }
}

/*Fonction pour la recherche d'un matrielle*/
void recherche_matrielle()
{
     int choix, ref_tampon;
     char nom_tampon[15];
     stock *tampon = p;
     printf("\n");
     printf("------ MENU RECHERCHE ------\n");
     printf("|-------------------------------\n");
     printf("|Recherche par reference ------- 1\n");
     printf("|-------------------------------\n");
     printf("|Recherche par nom ------------- 2\n");
     printf("|-------------------------------\n");
     printf("|Entrer votre choix: ");
     scanf("%d",&choix);
     switch (choix)
     {
            case 1:
                 {
                        printf("Entrer la reference du matrielle a rechercher: ");
                        scanf("%d",&ref_tampon);
                        while ((tampon != NULL)&&(tampon->b.reference != ref_tampon))
                              tampon = tampon->m_suivant;
                        if (tampon == NULL)
                           printf("Le matrielle ne se trouve pas dans le stock\n");
                        else
                        {    printf("|-------------------------------\n");
                             printf("|matrielle reference : %d\n",tampon->b.reference);
                             printf("|-------------------------------\n");
                             printf("|Le nom du matrielle: %s\n",tampon->b.nom);
                             printf("|-------------------------------\n");
                             printf("|La quantite du matrielle: %d\n",tampon->b.quantite);
                             printf("|-------------------------------\n");

                        }
                 }
                 break;
            case 2:
                 {
                        printf("Entrer le nom du matrielle a rechercher: ");
                        scanf("%s",nom_tampon);
                        while ((tampon != NULL)&&(strcmp(tampon->b.nom,nom_tampon)!=0))
                              tampon = tampon->m_suivant;
                        if (tampon == NULL)
                           printf("Le matrielle ne se trouve pas dans le stock\n");
                        else
                        {
                             printf("matrielle reference : %d\n",tampon->b.reference);
                             printf("Le nom du matrielle: %s\n",tampon->b.nom);
                             printf("La quantité du matrielle: %d\n",tampon->b.quantite);

                        }
                 }
                 break;
            default: printf("Erreur de choix - veuillez entrer un bon choix");
                     break;
     }
}

/*Fonction pour afficher tout le stock des matrielles */
void affichage_stock()
{

     stock *tampon = p;
     printf("\n");
     while (tampon != NULL)
     {     printf("|---------------------------------------------------|\n ");
           printf("|matrielle reference : %d \n",tampon->b.reference);
           printf("|---------------------------------------------------|\n ");
           printf("|Le nom du matrielle : %s   \n",tampon->b.nom);
           printf("|---------------------------------------------------|\n ");
           printf("|La quantité du matrielle : %d \n",tampon->b.quantite);
           printf("|---------------------------------------------------|\n ");

           tampon = tampon->m_suivant;
     }
}

/*Fonction pour la gestion des matrielle*/
void gestion_matrielle()
{
     int choix;
     printf("\n");
     system("cls");
     printf("------ Menu Gestion des articles  ------\n");
     printf("|---------------------------------------------------|\n ");
     printf("|Creation d'un matrielle ------ ------ 1             |\n");
     printf("|---------------------------------------------------|\n ");
     printf("|Suppression d'un matrielle ---------- 2             |\n");
     printf("|---------------------------------------------------|\n ");
     printf("|Modification d'un matrielle ---------  3            |\n");
     printf("|---------------------------------------------------|\n ");
     printf("|Recherche d'un matrielle ------------  4            |\n");
     printf("|---------------------------------------------------|\n ");
     printf("|Affichage du contenu de stock ----- 5               |\n");
     printf("|---------------------------------------------------|\n ");
     printf("|\n");
     printf("vous pouvez entrer votre choix : ");
     scanf("%d",&choix);
     switch (choix)
     {
            case 1: creation_matrielle();
                 break;
            case 2: suppresion_matielle();
                 break;
            case 3: modification_matrielle();
                 break;
            case 4: recherche_matrielle();
                 break;
            case 5: affichage_stock();
                 break;
            default: printf("Erreur de choix \n");
                 break;
     }
}

/*Fonction pour afficher un seul matrielle pour un professeur */
void affiche_matrielle()
{
     stock *tampon = p;
     printf("\n");
     while (tampon != NULL)
     {
           printf("matrielle reference : %d\n",tampon->b.reference);
           printf("Le nom du matrielle: %s\n",tampon->b.nom);
           tampon = tampon->m_suivant;
     }
}

/*Fonction pour effectuer une reservation*/
void effectuer_reservation()
{
     int ref_tampon,quantite_tampon,i=0 ,j=0;
     stock *tampon = p;
     reservation *tampon2 = (reservation *)malloc(sizeof(reservation));
     reservation *tampon3 = c;
     char proprietaire_tampon[15];
     char rep;
     affiche_matrielle();
     do
     {
         printf("\n");
         printf("Entrer la reference du matrielle que vous voulez reserver: ");
         scanf("%d",&ref_tampon);
         while ((tampon != NULL)&&(tampon->b.reference != ref_tampon))
               tampon = tampon->m_suivant;
         if ( tampon == NULL)
            printf("La reference saisie ne correspond pas a une reference dans le stock");
         else
         {
             printf("Entrer la quantite desirer");
             scanf("%d",&quantite_tampon);
             if ( i == 0)
             {
                  printf("Entrer le nom du proprietaire: ");
                  scanf("%s",&proprietaire_tampon);
                  strcpy(tampon2->proprietaire,proprietaire_tampon);
                  tampon2->total_reservation = 0;
                  if ( c == NULL )
                  {
                       tampon2->id_reservation = 1;
                       tampon2->c_suivant = NULL;
                       c = tampon2;
                  }
                  else
                  {
                      while (tampon3->c_suivant !=NULL)
                      {
                            j++;
                            tampon3 = tampon3->c_suivant;
                      }
                      tampon3->c_suivant = tampon2;
                      tampon2->id_reservation = j+1;
                  }
             }
             tampon2->executer = 0;
             tampon2->nb_matrielle_reservation = i+1;
             tampon2->total_reservation = quantite_tampon*tampon;
             tampon2->tab_materiel[i].st = tampon;
             tampon2->tab_materiel[i].quantite_reserver = quantite_tampon;
         }
         i++;
         printf("Voulez-vous ajouter un autre matrielle a votre reservation (O/N): ");
         scanf("%s",&rep);
     }while ((rep 'o')||(rep 'O'));
}

/*Fonction pour afficher les détail d'une reservation */
reservation * affiche_detail_reservation ()
{
     reservation *tampon = c;
     int id_reservation_tampon, i;
     printf("\n");
     printf("Entrer le numero de la reservation souhaitee: ");
     scanf("%d",&id_reservation_tampon);
     while ((tampon != NULL)&&(tampon->id_reservation != id_reservation_tampon))
           tampon = tampon->c_suivant;
     if ( tampon == NULL)
        printf("L'identifiant saisie ne correspond a aucune reservation");
     else
     {
         printf("Identifiant de la reservation:   %d\n",tampon->id_reservation);
         printf("Nom du proprietaire:          %s\n",tampon->proprietaire);
         for ( i = 0; i < tampon->nb_matrielle_reservation; i++)
         {
             printf("\tMatrielle N°-%d",i+1);
             printf("\tNom du Matrielle:   %s\n",tampon->tab_materiel[i].st->b.nom);
             printf("\tQuantite reserver: %d\n",tampon->tab_materiel[i].quantite_reserver);
         }

     }
     return tampon;
}


/*Fonction du menu principal*/
void menu_principal()
{
     int choix;
     int r;
     do
     {

         printf("\n");
         system("cls");
          Color2(FOREGROUND_RED | BACKGROUND_INTENSITY);
          Color(3,15);
    printf("         Mini-Logiciel de Facturation et Gestion de Stock      \n");
    Color(2,15);
    printf("                                                               \n");
    printf("        ****** Programme Realise par ******                    \n");
    printf("                                                               \n");
    printf("                khawla jalala                                  \n");
    printf("                kawtar hajji                                   \n");
    printf("                lamia rafii                                    \n");
    printf("                sofia griss                                    \n");
    printf("                majd karam dine                                \n");
    printf("       **** Encadre par Mr.khalid. RissaouI ****               \n");
    printf("                                                           \n\n\n");
    Color(4,2);
         printf("------ MENU PRINCIPAL -----------\n");
         printf("|--------------------------------\n");
         printf("|Gestion des matrielle ---------1\n");
         printf("|--------------------------------\n");
         printf("|Gestion des reservation--------2\n");
         printf("|--------------------------------\n");
         printf("|SUPPRESTION d'un matrielle -----\n");
         printf("|--------------------------------\n");
         printf("|Sortie du programme -----------3\n");
         printf("|--------------------------------\n");
         printf("|Entrer votre choix: ");
         scanf("%d",&choix);
         switch (choix)
         {
                case 1: gestion_matrielle();
                     break;
                case 2:effectuer_reservation();
                     break;
                case 3: exit(0);
                     break;
                default: printf("Erreur de choix - veuillez entrer un bon choix");
                     break;
         }
         printf("\nVoulez vous revenir au menu principal (1/N): ");
         scanf("%d",&r);
     }while ((r 1)||(r 1));
}

int main()
{
    menu_principal();
    getch();
    return 0;
}
il ya une erreur ||In function 'void effectuer_reservation()':|
|421|error: invalid operands of types 'int' and 'stock*' to binary 'operator*'|
MERCI DE M'AIDER

2 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
6 mai 2013 à 09:00
reBonjour,
Autant pour moi il fallait
stock->b.quantite

Attention il y a rncore d'autres erreurs que tu prendras le soin de corriger dans
suppresion_matielle()

car tu utilise pour le case 2 tampon2 sans l'avoir initialisé.
Bon codage, à toi de jouer

louis
3
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
6 mai 2013 à 08:56
Bonjour,
Tout est dit dans l'erreur, tu veux affecter à un flottant le résultat de la multiplication d'un entier par la structure stock dans la ligne
tampon2->total_reservation = quantite_tampon*tampon;
.
Il me semble que tu veux avoir la quantité totale donc il faut prendre
tampon.b.quantite

Bon codage
louis
0
Rejoignez-nous