PROGRAMME EN C /// SVP AIDEZ MOI

Fermé
kete - 27 avril 2009 à 22:11
zicktraxx Messages postés 5462 Date d'inscription mercredi 3 décembre 2008 Statut Contributeur Dernière intervention 17 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


#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

#define NB_LOTS_POISSONS_MAX 50
#define TAILLE_NOM 20

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;


printf("\nNom Acheteur :\n");
scanf("%s", nomAcheteur);

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;

printf("\nNOUVEAU PRIX %s %5d\n", liste[numeroLot].nomLot, liste[numeroLot].prix);
}
else
{
printf("\nPRIX MAINTENU\n");
}
}
else
{
printf("\nLOT INCONNU\n");
}
}
else
{
printf("\nNOM ACHETEUR IMPOSSIBLE\n");
}
}

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);
}
}

}
A voir également:

1 réponse

zicktraxx Messages postés 5462 Date d'inscription mercredi 3 décembre 2008 Statut Contributeur Dernière intervention 17 septembre 2019 3 276
27 avril 2009 à 22:13
Merci de ne pas faire de doublon !!
0