kete
-
27 avril 2009 à 22:11
zicktraxx
Messages postés5462Date d'inscriptionmercredi 3 décembre 2008StatutContributeurDernière intervention17 septembre 2019
-
27 avril 2009 à 22:13
Bonjour, POURRIEZ VOUS M AIDER URGENT
Voici l'énoncer de mon problème :
A Arrivage d'un lot de poisson (erreur à traiter : "Lot déjà enregistré" nom du lot ou affichage "ARRIVAGE)
B Proposition prix d'un acheteur (erreur à traiter : "Lot inconnu" nom du lot ou affichage si possible d'augmenter prix indice 5 "nouveau prix" non du lot prix ou sinon, "Prix maintenu nom du lot pris en compte.
C Liste des lots (Affichage : "AUCUN LOT" ou la liste des lots dans l'ordre d'arrivage avec pour chacun : le nom du lot, le dernier prix enregistre, le nom de l'acheteur
C Clôture de cette vente aux enchères
struct lotPoisson{
char nomLot[TAILLE_NOM];
int prix;
char nomAcheteur[TAILLE_NOM];
};
struct acheteur{
char nom[TAILLE_NOM];
};
void Proposition(struct lotPoisson *liste, int nbLots);
int TESTLOT(struct lotPoisson *liste,char *nomLot, int nbLots);
void AFFLOT(struct lotPoisson *liste,int nbLots);
void AFFACH(struct lotPoisson *liste,int nbLots);
int _tmain()
{
struct lotPoisson lot[NB_LOTS_POISSONS_MAX];
int NbLotsSaisis=0;
char commande;
int clotureDesVentes=0;
int nbAcheteurs=0;
printf("\nVENTE DE POISSONS\n");
printf("*****************\n\n");
do
{
printf("\nA : Arrivage d'un lot de poisson\n");
printf("P : Proposition de prix d'acheteur\n");
printf("L : Liste des lots\n");
printf("C : Cloture des ventes\n");
printf("\n-> ");
commande= getch();
commande= toupper(commande);
if (commande=='A')
{
char nomLot[TAILLE_NOM];
int prix;
printf("\nSaisissez le nom du lot de poisson\n");
scanf("%s",&nomLot);
if (TESTLOT(lot,nomLot,NbLotsSaisis)==-1)
{
printf("\nSaisissez le prix de mise en vente\n");
scanf("%d",&prix);
/* initialisation du lot */
strcpy(lot[NbLotsSaisis].nomLot,nomLot);
lot[NbLotsSaisis].prix=prix;
strcpy(lot[NbLotsSaisis].nomAcheteur,"INVENDU");
/* comme spécifié, on ne testera pas le nombre de lot saisis*/
/* cependant, on risque de sortir de la zone mémoire attribuée si le nb de lots saisis dépasse 50*/
NbLotsSaisis++;
printf("\nARRIVAGE\n");
}
else
{
printf("\nLOT DEJA ENREGISTRE\n");
}
}
else
if (commande=='P')
{
Proposition(lot,NbLotsSaisis);
}
else
if (commande=='L')
{
AFFLOT(lot,NbLotsSaisis);
}
else
if (commande=='C')
{
/*fin des ventes, on sort de la boucle while */
clotureDesVentes=1;
}
} while (clotureDesVentes==0);
AFFACH(lot,NbLotsSaisis);
getch();
}
void AFFLOT(struct lotPoisson *liste, int nbLots)
{
int i;
if (nbLots==0)
{
printf("\AUCUN LOT\n");
}
else
{
printf("\nLISTE DES LOTS (nom du lot, nom acheteur, meilleure offre)\n");
for (i=0; i<nbLots; i++)
{
printf("lot %2d : %20s %20s %5d\n", i+1, liste[i].nomLot, liste[i].prix, liste[i].nomAcheteur);
}
}
}
int TESTLOT(struct lotPoisson *liste,char *nomLot, int nbLots)
{
int i;
int code_retour=-1;
for (i=0; i<nbLots; i++)
{
if (strcmp(nomLot,liste[i].nomLot)==0)
{
/* le nom du lot existe dans un des lots saisis, il est à la position i*/
code_retour=i;
/* on quitte la boucle for par un break */
break;
}
}
return(code_retour);
}
void Proposition(struct lotPoisson *liste, int nbLots)
{
char nomAcheteur[TAILLE_NOM], nomLot[TAILLE_NOM];
int prix;
int numeroLot;
if (strcmp(nomAcheteur,"INVENDU")!=0)
{
/* le nom de l'acheteur a été correctement saisi */
/* on demande donc de saisir le nom du lot */
printf("\nNom du lot : ");
scanf("%s",nomLot);
/* recherche du lot dans la liste */
numeroLot=TESTLOT(liste,nomLot,nbLots);
if (numeroLot!=-1)
{
printf("\nProposition de prix pour ce lot: ");
scanf("%d",&prix);
if ( prix>liste[numeroLot].prix )
{
/* l'acheteur est meilleur enchérisseur sur le lot */
strcpy(liste[numeroLot].nomAcheteur, nomAcheteur);
liste[numeroLot].prix=prix;
void AFFACH(struct lotPoisson *liste, int nbLots)
{
/* cette fonction doit afficher le bilan des ventes par acheteur */
/* il faut donc d'abord établir la liste des acheteurs et leur bilan */
int lotTraite[50];
int i,j,nbAcheteurs=0;
int total;
for (i=0; i<nbLots; i++)
{
/* lot non comptabilisé*/
lotTraite[i]=0;
}
for (i=0; i<nbLots; i++)
{
if ((lotTraite[i]==0)&&(strcmp(liste[i].nomAcheteur, "INVENDU")!=0))
{
printf("\n Acheteur %s : ",liste[i].nomAcheteur);
printf(" %s ",liste[i].nomLot);
total=liste[i].prix;
/* le lot i a un acheteur */
/* on fait la somme des */
for (j=i+1; j<nbLots; j++)
{
if (strcmp(liste[j].nomAcheteur,liste[i].nomAcheteur)==0)
{
printf(" %s ",liste[j].nomLot);
total+=liste[j].prix;
lotTraite[j]=1; /* indique que le lot a déjà été comptabilisé*/
}
}
printf("\nTOTAL : %5d\n", total);
}
}
zicktraxx
Messages postés5462Date d'inscriptionmercredi 3 décembre 2008StatutContributeurDernière intervention17 septembre 20193 278 27 avril 2009 à 22:13