Aidez moi en C pouvez vous me dire si c est O

Fermé
KETE - 6 avril 2009 à 19:55
 KETE - 25 mai 2009 à 19:33
Bonjour,


AIDEZ MOI C EST URGENT DITES MOI SI CE PROGRAMME TIENT LANGAGE C URGENT

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

}

9 réponses

HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
6 avril 2009 à 20:11
Salu,

C'est effectivement du C si c'est ça ta question.
0
Merci. Mais ce programme C "poisson" est il bien fait. Peut on l'optimiser. Merci.
0
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
6 avril 2009 à 20:39
Euh.. sa m'aiderais énormement de savoir quel est le but de ce code, car je peut pas répondre à "es qu'on peut l'optimiser ?" si je connais pas le but de ce code.
Donc ce serai bien si tu pouvés me le décrire (je sais je suis un fénéant), merci.
0
Penses tu qu au niveau du langage C - les opérateurs et les déclaration (la structure est bien faite). Merci.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 avril 2009 à 21:37
Salut,

Donner les solutions par mail, c'est contraire au principe d'existence d'un forum d'entraide.

Ecrire en majuscule = crier
Tu as un code, tu peux faire au moins l'effort de le compiler et si jamais il y a des erreurs de les afficher.
On n'est pas là pour faire à ta place.

Si tu as écrit le code, alors c'est bizarre que tu n'as pas eu la curiosité de le compiler.
0
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
6 avril 2009 à 22:06
Non, apparement le code est fonctionnel (d'aprés ce que j'ai compris mais j'ai pas tester), l'auteur veut juste savoir s'il est encore optimisable ou pas, chose que je ne peut faire maintenant par manque de temps.

Ciao @+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
6 avril 2009 à 22:09
C'est vrai que faire des échanges d'adresse emails est contraire au réglement mais bon :S.

Désolé.
0
#include "stdafx.h"
#include "stdio.h"

void main()
{
int val1, val2, i;
printf("afficher un nombre entier\n")
scanf("%d, &val1);
for (i=0, i<3,i=i+1)
printf("afficher un nombre réel\n")
scanf(%f, &val2)

return i;
}
0
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
7 avril 2009 à 19:31
Heinn ??!! C'est quoi de ce code ?? MDR!!!

1- Il inclus les fichiers de la lib standard comme si c'etait des fichiers que le programmeur à creer lui même.

2- L'inclusion de stdafx.h ne sert à rien

2- La fonction main ne retourn rien (void) mais y a comme même un return ce qui fera une erreur de complilation.

3- Oublie du ";" aprés printf("afficher un nombre entier\n")

4- Oublie du " à scanf("%d, &val1); qui devrais étre scanf("%d", &val1);

5- La condition de bouclage FOR sépare les parties par un ";" et pas une virgule

6- Oublie du ";" aprés printf("afficher un nombre réel\n")

7- Oublie des " à scanf(%f, &val2) qui devrais étre scanf("%f", &val2)

8- La variable val2 est un INT pas un FLOAT ni même un DOUBLE donc erreur pour scanf(%f, &val2)

9- Oublie du ";" aprés scanf(%f, &val2) qui normalement devrais étre scanf("%d", &val2)

10- Oublie des { et } car une boucle qui fait qu'affiché "afficher un nombre réel\n" ne sert pas à grand chose

11- On peut pas retourner des données alors que la fonction ne le permet pas, donc return i; est une erreur et de plus je vois pas trop l'intéré de retourné i.


Ma parole c'est le plus beau code que j'ai jamais vu !
Bravo pour le programmeur qui à fait preuve de beaucoups d'imaginations.

Mdr! Ciao! La prochaine fois met une description et signale que tu debutes...
0
Peux tu me donner des cours ? ça te dit ? cette semaine !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 avril 2009 à 11:34
Salut,

Tu trouves des cours sur net.
Tu n'as qu'à creuser un peu sur google et commencer à lire.
Si tu rencontres des problèmes et tu as besoin d'explication tu peux toujours poser tes questions sur CCM.

https://www.rocq.inria.fr/secret/Anne.Canteaut/
http://www-ipst.u-strasbg.fr/pat/program/tpc.htm
http://membres.lycos.fr/dancel/c/c.html
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c
https://www.ltam.lu/cours-c/

Et je m'arrête là, à toi de continuer.
0
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
11 avril 2009 à 12:10
Hey kete !

Je te conseille le site du zero ! Tu auras des bonnes bases et ensuite tu peux aller sur developpez.com si tu connais les bases et là tu auras des cours avancés et d'ailleur t'en trouve aussi sur sdz mais bon.

Bon apprentissage ;)

Ne décroche pas surtout =D
0
Merci pour tes conseils - sympa - Je tente de les aborder ! j'ai aujourd'hui un nouveau programme à réaliser - il faudrait le faire en langage C - Je tente de le faire ! et te l'adresse. A +
0
HackStyle Messages postés 30 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 12 avril 2009 9
12 avril 2009 à 22:22
Je suis là pour toutes aides ;)

Si ta un probléme, une questions, je suis là =D

Ciao!
0
Simulation d'une partie de dés Lise et Henri jouent aux dés. Le principe du jeu est très simple : à chaque tour de jeu chacun lance un dé et additionne à son score le nombre de points marqués par le dés.

En utilisant les classes « Joueur »,  « Dé » et « Jeu » que vous construirez, écrire un programme pour simuler une partie :
simuler un jeu à dix tours.
À chaque tour, afficher le tirage de Lise et Henri et leur score respectifs
À la fin de la partie afficher le nom du gagnant (celui qui a le plus de points).
Les matchs nuls, bien que peu probables, sont néanmoins possibles !
0