Si vous etes fort en programmation c
Fermé
abedallah marwa
Messages postés
1
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
1 avril 2009
-
1 avril 2009 à 23:59
marwa abdallah - 11 avril 2009 à 19:58
marwa abdallah - 11 avril 2009 à 19:58
A voir également:
- Si vous etes fort en programmation c
- Application de programmation - Guide
- Son trop fort au minimum casque bluetooth - Forum Casque et écouteurs
- Mot de passe coffre fort oublié oppo - Forum Mobile
- Son whatsapp trop fort ✓ - Forum Samsung
8 réponses
Même si tu flattes notre ego en nous qualifiant de 'fort en programmation', ce n'est pas une raison qui nous fera faire cet exercice à ta place. Pour t'en convaincre, lis ou relis
Demander de l'aide pour vos exercices sur CCM
Demander de l'aide pour vos exercices sur CCM
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
9 avril 2009 à 16:52
9 avril 2009 à 16:52
"sruct" est différent d'une fonction, tu ne peux pas le mettre devant de nom d'une fonction, et il ne prend rien en paramettre et ne retourne rien. devant le nom d'une fonction tu dois mettre le type que tu retourne si tu fais une return, sinon tu met void.
ceci :
struct B(void)
{
int stock;
char* nom;
int prix;
return 0; };
est faux, il faut l'ecrire ainsi :
typedef struct
{
int stock;
char* nom;
int prix;
}B;
le main est le programme principal dans lequel tu y met toute les fonctions que tu a ecrite, par exemple, si tu veux faire un affichage tu fais appelle a la fonction affichage en mettant en paramettre ce qu'il faut; et il s'ecrit ainsi : int main (void){... return 0;}.
ceci :
struct B(void)
{
int stock;
char* nom;
int prix;
return 0; };
est faux, il faut l'ecrire ainsi :
typedef struct
{
int stock;
char* nom;
int prix;
}B;
le main est le programme principal dans lequel tu y met toute les fonctions que tu a ecrite, par exemple, si tu veux faire un affichage tu fais appelle a la fonction affichage en mettant en paramettre ce qu'il faut; et il s'ecrit ainsi : int main (void){... return 0;}.
Bonjour,
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
Merci de votre aide.
//Centralisation de vente de poissons
//centpoisson.cpp
#include <stdafx.h>
#include <stdlib.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);
}
}
}
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
Merci de votre aide.
//Centralisation de vente de poissons
//centpoisson.cpp
#include <stdafx.h>
#include <stdlib.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);
}
}
}
Bonjour,
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
Merci de votre aide.
//Centralisation de vente de poissons
//centpoisson.cpp
#include <stdafx.h>
#include <stdlib.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);
}
}
}
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
Merci de votre aide.
//Centralisation de vente de poissons
//centpoisson.cpp
#include <stdafx.h>
#include <stdlib.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);
}
}
}
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
9 avril 2009 à 17:13
9 avril 2009 à 17:13
il y a beaucoup de faute, mais je vais essayé de t'en corriger quelques unes. je poste dés que c'est fait
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
9 avril 2009 à 17:35
9 avril 2009 à 17:35
difficile de corriger toutes les fautes sans de vrai explications sur ce que doit faire ton programme. mais j'ai fais ceci (tout ce qui est en gras c'est les explications pour que tu corrige, je ne vais pas le faire a ta place, tu n'apprendra pas sinon):
#include<stdio.h>
#include<string.h>
#define nbre 5
typedef struct
{
int stock;
char* nom;
int prix;
}B;
/*je comprend pas ce que fais cette function donc je ne l’ai pas modifiée, je te dis juste quelles sont les erreurs*/
struct insertion(int stock) /*si tu retourne 0, elle doit s’ecrire « int insertion(int stock)*/
{
{
if (stock >= 1)
stock --;
}
{
if(stock==0)
switch (nom_boisson) /*nom_boisson n’est pas declaré*/
case 1 : "Coca Cola";
stock++;
case 2 : "Coca cola light";
stock++;
case 3 : "Fanta";
stock++;
case 4 : "Sprite";
stock++;
case 5 : "eau minerale";
stock++;
default :
printf("Vous ne pouvez pas stocker autre type de boisson !");
}
return 0; };
struct affichage(void)
{
printf("boison disponible\n");
printf("\n");
printf("1...100 cents ...Coca cola\n");
printf("2...110 cents ...Coca cola light\n");
printf("3...100 cents ...fanta\n");
printf("4...100 cents ...sprite\n");
printf("5...100 cents ...eau minerale\n");
printf("\n");
printf("votre choix (1à5):");
return 0;}; /*pas besoin de retourner 0, commence juste ta fonction par « void affichage() »*/
struct paiment(void)
{int c,pi,sr,d;
char rep;
do
{printf("votre choix (1à5):");
scanf("%d",&c);
}
while((c<5)&&(c>1));
printf("les pieces autorisés dans le distributeur sont:\n");
printf("1 2 5 10 20 50 100 200\n\n");
do
{
if(pi==B.prix) /*que vaut pi ? */ /*B est le nom de ta structure pas ne variable tu ne peux pas l’utiliser ainsi, il te faut le passer en parametre de ta fonction comme ceci : int paiement(B b), et b sera ta variable, il te suffit ensuite de faire b.prix*/
printf("autr boison o/n");
scanf("%s",rep); /*lorsque tu fais un scanf, il te faut passer ta variable par adresse, en mettant un & devant*/
else
if(pi<B.prix)
sr=B.prix-pi;
else
d=pi-B.prix;
printf("je vous dois%d",d);
}
while(sr!=0); /*que vaut sr ?*/
switch (c)
{
case'1': printf("\nVeuillez payer votre COCA COLA !\n");
printf("%d:",sr);
printf("introduise une piece autorisée");
scanf("%d",pi); /*mettre & devant pi*/
break;
case'2': printf("\nVeuillez payer votre COCA COLA LIGHT !\n");
printf("solde restant:110");
printf("introduise une piece autorisée");
break;
case'3': printf("\nVeuillez payer votre FANTA !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'4': printf("\nVeuillez payer votre SPRITE !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'5': printf("\nVeuillez payer votre EAU MINERAL !\n");
printf("solde restant:80");
printf("introduise une piece autorisée");
break;
}
return 0;}
void main()
{
FILE*fp;
char* fich;
printf("donner le nom du fichier:%s ",fich);
if ((fp=fopen(fich,'w'))==NULL)
printf ("erreur!!!");
else
{ /*je te conseille de mettre ce qui suit dans une autre fonction que tu pourrais appeler : void initialise(B *b), et tu remplace tous les B par les b*/
printf("donner le nombre de boissons disponible");
scanf("%d",nbre);
for (int i=0;i<nbre;i++)
{
printf("entrer le nom de boisson/n");
scanf("%s",B->nom);
printf("donner la quantité maximale à stocker:/n");
scanf("%d", B.stock);
printf("donner le prix du boisson/n");
scanf("%d",B.prix);
}
}
}
Dans le main, tu met l’ouverture tu fichier, ensuite tu fais appelle a la fonction initialise, puis la fonction affichage, et enfin le paiement, même si pour celle si je te conseille de demander a celui qui utilise le programme s’il veut une boisson ou non, s’il en veut pas tu ne fera pas appelle a la fonction et ton prgramme se terminera.
Je te conseille aussi d'aller faire un tour sur ce site : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c ou tu pourra bien apprendre et comprendre certaine chose que tu n'as apparement pas assimilé.
si tu as d'autre question j'y repondrai. et si tu veux tu peux poster la version que tu auras corrigé de ton programme pour que je le verifie encore si tu le souhaite.
bon courage
#include<stdio.h>
#include<string.h>
#define nbre 5
typedef struct
{
int stock;
char* nom;
int prix;
}B;
/*je comprend pas ce que fais cette function donc je ne l’ai pas modifiée, je te dis juste quelles sont les erreurs*/
struct insertion(int stock) /*si tu retourne 0, elle doit s’ecrire « int insertion(int stock)*/
{
{
if (stock >= 1)
stock --;
}
{
if(stock==0)
switch (nom_boisson) /*nom_boisson n’est pas declaré*/
case 1 : "Coca Cola";
stock++;
case 2 : "Coca cola light";
stock++;
case 3 : "Fanta";
stock++;
case 4 : "Sprite";
stock++;
case 5 : "eau minerale";
stock++;
default :
printf("Vous ne pouvez pas stocker autre type de boisson !");
}
return 0; };
struct affichage(void)
{
printf("boison disponible\n");
printf("\n");
printf("1...100 cents ...Coca cola\n");
printf("2...110 cents ...Coca cola light\n");
printf("3...100 cents ...fanta\n");
printf("4...100 cents ...sprite\n");
printf("5...100 cents ...eau minerale\n");
printf("\n");
printf("votre choix (1à5):");
return 0;}; /*pas besoin de retourner 0, commence juste ta fonction par « void affichage() »*/
struct paiment(void)
{int c,pi,sr,d;
char rep;
do
{printf("votre choix (1à5):");
scanf("%d",&c);
}
while((c<5)&&(c>1));
printf("les pieces autorisés dans le distributeur sont:\n");
printf("1 2 5 10 20 50 100 200\n\n");
do
{
if(pi==B.prix) /*que vaut pi ? */ /*B est le nom de ta structure pas ne variable tu ne peux pas l’utiliser ainsi, il te faut le passer en parametre de ta fonction comme ceci : int paiement(B b), et b sera ta variable, il te suffit ensuite de faire b.prix*/
printf("autr boison o/n");
scanf("%s",rep); /*lorsque tu fais un scanf, il te faut passer ta variable par adresse, en mettant un & devant*/
else
if(pi<B.prix)
sr=B.prix-pi;
else
d=pi-B.prix;
printf("je vous dois%d",d);
}
while(sr!=0); /*que vaut sr ?*/
switch (c)
{
case'1': printf("\nVeuillez payer votre COCA COLA !\n");
printf("%d:",sr);
printf("introduise une piece autorisée");
scanf("%d",pi); /*mettre & devant pi*/
break;
case'2': printf("\nVeuillez payer votre COCA COLA LIGHT !\n");
printf("solde restant:110");
printf("introduise une piece autorisée");
break;
case'3': printf("\nVeuillez payer votre FANTA !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'4': printf("\nVeuillez payer votre SPRITE !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'5': printf("\nVeuillez payer votre EAU MINERAL !\n");
printf("solde restant:80");
printf("introduise une piece autorisée");
break;
}
return 0;}
void main()
{
FILE*fp;
char* fich;
printf("donner le nom du fichier:%s ",fich);
if ((fp=fopen(fich,'w'))==NULL)
printf ("erreur!!!");
else
{ /*je te conseille de mettre ce qui suit dans une autre fonction que tu pourrais appeler : void initialise(B *b), et tu remplace tous les B par les b*/
printf("donner le nombre de boissons disponible");
scanf("%d",nbre);
for (int i=0;i<nbre;i++)
{
printf("entrer le nom de boisson/n");
scanf("%s",B->nom);
printf("donner la quantité maximale à stocker:/n");
scanf("%d", B.stock);
printf("donner le prix du boisson/n");
scanf("%d",B.prix);
}
}
}
Dans le main, tu met l’ouverture tu fichier, ensuite tu fais appelle a la fonction initialise, puis la fonction affichage, et enfin le paiement, même si pour celle si je te conseille de demander a celui qui utilise le programme s’il veut une boisson ou non, s’il en veut pas tu ne fera pas appelle a la fonction et ton prgramme se terminera.
Je te conseille aussi d'aller faire un tour sur ce site : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c ou tu pourra bien apprendre et comprendre certaine chose que tu n'as apparement pas assimilé.
si tu as d'autre question j'y repondrai. et si tu veux tu peux poster la version que tu auras corrigé de ton programme pour que je le verifie encore si tu le souhaite.
bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci bien mais est-ce que vous pouvez m'aidez encore à ordonner le trvail et ecrire le main je n'arrive pas à le faire et desolé pour le derangement
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
9 avril 2009 à 18:25
9 avril 2009 à 18:25
ok voila un exemple de main qui n'est pas du tout exaustif mais qui peut etre une base a modifier ensuite:
int main(void)
{
FILE*fp;
char *fich,*choix;
B b;
choix = (char *)malloc(3*sizeof(char));
printf("donner le nom du fichier : \n");
scanf("%s",fich);
if ((fp=fopen(fich,"wt"))==NULL) {
printf ("erreur d'ouverture du fichier\n");
}
que veux tu ecrire dans le fichier ?
initialise(&b);
affichage();
printf("Voulez vous acheter une boisson (oui/non) ?\n");
scanf("%s",choix);
if(strcmp(choix,"oui") == 0){
paiement(b);
}
return 0;
}
int main(void)
{
FILE*fp;
char *fich,*choix;
B b;
choix = (char *)malloc(3*sizeof(char));
printf("donner le nom du fichier : \n");
scanf("%s",fich);
if ((fp=fopen(fich,"wt"))==NULL) {
printf ("erreur d'ouverture du fichier\n");
}
que veux tu ecrire dans le fichier ?
initialise(&b);
affichage();
printf("Voulez vous acheter une boisson (oui/non) ?\n");
scanf("%s",choix);
if(strcmp(choix,"oui") == 0){
paiement(b);
}
return 0;
}
c'est bourré de fautes vos programmes
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
11 avril 2009 à 15:32
11 avril 2009 à 15:32
on est pas à l'abris d'erreur, corrige les ça fera avancer les choses
marwa abdallah
>
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
11 avril 2009 à 19:58
11 avril 2009 à 19:58
merci de repondre à ma place à ce qui essaye de me critiquer sans fiare un effort pour m' aider si le sujet ne lui semble pas interessant pourquoi il intervient c vraiment...........
Merci d"éviter de prendre les gens pour des cons avec des titres aussi absurdes....
lucieb31
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
62
11 avril 2009 à 19:05
11 avril 2009 à 19:05
merci d'eviter ce genre de reponses qui ne servent à rien
9 avril 2009 à 16:36
#include<stdio.h>
#include<string.h>
#define nbre 5
struct B(void)
{
int stock;
char* nom;
int prix;
return 0; };
struct insertion(int stock)
{
{
if (stock >= 1)
stock --;
}
{
if(stock==0)
switch (nom_boisson)
case 1 : "Coca Cola";
stock++;
case 2 : "Coca cola light";
stock++;
case 3 : "Fanta";
stock++;
case 4 : "Sprite";
stock++;
case 5 : "eau minerale";
stock++;
default :
printf("Vous ne pouvez pas stocker autre type de boisson !");
}
return 0; };
struct affichage(void)
{
printf("boison disponible\n");
printf("\n");
printf("1...100 cents ...Coca cola\n");
printf("2...110 cents ...Coca cola light\n");
printf("3...100 cents ...fanta\n");
printf("4...100 cents ...sprite\n");
printf("5...100 cents ...eau minerale\n");
printf("\n");
printf("votre choix (1à5):");
return 0;};
struct paiment(void)
{int c,pi,sr,d;
char rep;
do
{printf("votre choix (1à5):");
scanf("%d",&c);
}
while((c<5)&&(c>1));
printf("les pieces autorisés dans le distributeur sont:\n");
printf("1 2 5 10 20 50 100 200\n\n");
do
{
if(pi==B.prix)
printf("autr boison o/n");
scanf("%s",rep);
else
if(pi<B.prix)
sr=B.prix-pi;
else
d=pi-B.prix;
printf("je vous dois%d",d);
}
while(sr!=0);
switch (c)
{
case'1': printf("\nVeuillez payer votre COCA COLA !\n");
printf("%d:",sr);
printf("introduise une piece autorisée");
scanf("%d",pi);
break;
case'2': printf("\nVeuillez payer votre COCA COLA LIGHT !\n");
printf("solde restant:110");
printf("introduise une piece autorisée");
break;
case'3': printf("\nVeuillez payer votre FANTA !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'4': printf("\nVeuillez payer votre SPRITE !\n");
printf("solde restant:100");
printf("introduise une piece autorisée");
break;
case'5': printf("\nVeuillez payer votre EAU MINERAL !\n");
printf("solde restant:80");
printf("introduise une piece autorisée");
break;
}
return 0;}
void main()
{
FILE*fp;
char* fich;
printf("donner le nom du fichier:%s ",fich);
if ((fp=fopen(fich,'w'))==NULL)
printf ("erreur!!!");
else
{
printf("donner le nombre de boissons disponible");
scanf("%d",nbre);
for (int i=0;i<nbre;i++)
{
printf("entrer le nom de boisson/n");
scanf("%s",B->nom);
printf("donner la quantité maximale à stocker:/n");
scanf("%d", B.stock);
printf("donner le prix du boisson/n");
scanf("%d",B.prix);
}
}
}