Programme en C de gestion

cs_fizou1989 Messages postés 17 Date d'inscription samedi 7 novembre 2009 Statut Membre Dernière intervention 9 janvier 2011 - 1 avril 2010 à 20:47
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 - 29 avril 2010 à 09:54
bonjour;
j ai besoin d 'aide je suis entrain de realiser un mini projet GMAO gestion de maintenance assistee par ordinateur ,
j ai realiser un programme mais il ne marche pas apres compilation ,il consiste a signaler une panne survenu ,apres verifie si la piece existe dans le stock il la remplace sinon il se dirrige vers l'achat .
I need your help ,merci.
#include<conio.h>
#include<stdio.h>
void panne (char[] ,int, char[]);
int verifie(int);

void replace(char[],int,char[]);
void achat(char[],int,char[],int);

typedef struct
{
char type[100];
char marque[100];
int num;
}stock;
main()
{ stock t[100];
char type[100];
char marque[100];
int numero;
int y;
int l;
int n;
int i;
int boolenne=0;
int prix;
printf("entrer le nombre de pieces qui existent dans le stock");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("entrer la marque de la piece %d\n",i);
scanf("%s",t[i].marque);
printf("entrer le type de la piece %d\n",i);
scanf("%s",t[i].type);
printf("entrer le numero de la piece %d_n",i);
scanf("%d",t[i].num);
}
scanf("%d",&boolenne);
if(boolenne==1)
{
printf("il y a une piece en panne ");
panne (type,numero,marque);
y=verifie(numero);
if(y==1)
{
replace(type,numero,marque);
}
else
{

achat(type,numero,marque,prix);
printf("le prix d'achat %d",prix);
scanf("%d",&prix);
}

}

getch();
}
void panne(char type[100],int numero,char marque[100])
{

printf("entrer le numero de la piece en panne %d",numero);
scanf("%d",&numero);
printf("entrer le type de la piece en panne %s",type);
scanf("%s",type);
printf("entrer la marque de la piece en panne %s",marque);
scanf("%s",marque);

}

int verifie(int numero)
{ stock t[100];
int y;
char panne[100];
int matricule;
int i=0;
int n;
printf("entrer le nombre de pieces dans le stock ");
scanf("%d",&n);

for(i=0;i<=n;i++)
{
if(numero == t[i].num)
{
printf("existe dans le stock");
break;
y=1;
}
else
{
printf("la piece n'existe pas");

y=0;

}
}
return(y);
}




void replace(char type[],int numero,char marque[])
{
int i;
int n;
stock t[100];
char categorie[100];

printf("entrer la categorie de la piece en panne???\n");
scanf("%s",categorie);
printf("entrer le numero de la piece en panne ???\n");
scanf("%d",&numero);

printf("entrer le nombre de piece ");
scanf("%d",&n);


for(i=0;i<=n;i++)
{
if(numero == t[i].num)

{ type=t[i].type;
marque=t[i].marque;
printf("le nouveau type est %s", t[i].type);
printf("la nouvelle marque est %s",t[i].marque);
break;
}

else
{
printf(" on peut pa remplacer la piece");
}
}
}
void achat( char type[],int numero,char marque[],int prix)
{
printf("achat de la piece de type %s de marque %s de numero %d de prix %d\n");
scanf("%s %s %d %d",type,marque,numero);
}

9 réponses

deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
2 avril 2010 à 11:04
Salut ! C'est à dire :
Il ne marche pas après compilation
?

Il plante, il met une erreur de segmentation ??

Il nous faudrait plus de précision pour trouver l'erreur.
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
2 avril 2010 à 11:15
Le tableau t n'est pas initialisé ici :
int verifie(int numero)
{ stock t[100]; 


le y=1 n'est jamais atteint dans la fonction verifie (le break sort de la boucle avant)
break;
y=1; 


Cette boucle est pourrie, elel doit t'afficher plein de fois le message "la piece n'existe pas":
for(i=0;i<=n;i++)
{
if(numero == t[i].num)
{ 
printf("existe dans le stock");
break;
y=1;
}
else
{
printf("la piece n'existe pas");

y=0;

} 
. Tu devrais faire :
y=0;
for(i=0;i<=n;i++)
{
if(numero == t[i].num)
{ 
printf("existe dans le stock");
y=1;
break;
}
}
if (y==0)
   printf("la piece n'existe pas");


Idem pour cette boucle !
for(i=0;i<=n;i++)
{
if(numero == t[i].num)

{ type=t[i].type;
marque=t[i].marque;
printf("le nouveau type est %s", t[i].type);
printf("la nouvelle marque est %s",t[i].marque);
break;
}

else
{
printf(" on peut pa remplacer la piece");
}
} 


C'est pas très clair ce que tu as essayé de faire ici:
achat(type,numero,marque,prix);
printf("le prix d'achat %d",prix);
scanf("%d",&prix); 

prix n'est pas initialisé et tu demandes de l'afficher dans la fonction achat puis tu demandes de rentrer sa valeur (après une série d'autre) dans la même fonction pour l'afficher encore une fois après la fonction et tu redemandes un prix après. C'est confus ton truc.

Répare déjà ces erreurs et ca ira surement un peu mieux.
0
cs_fizou1989 Messages postés 17 Date d'inscription samedi 7 novembre 2009 Statut Membre Dernière intervention 9 janvier 2011
3 avril 2010 à 17:14
merci j ai commis des erreurs graves mais aussi il ne fonctionne pas j ai meme supprimer la fonction achats et sa marche po
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
3 avril 2010 à 18:43
C'est à dire ? Il fait quoi ? Décris précisement !
0

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

Posez votre question
cs_fizou1989 Messages postés 17 Date d'inscription samedi 7 novembre 2009 Statut Membre Dernière intervention 9 janvier 2011
5 avril 2010 à 01:19
le meme probleme
bn il me damnde combien de piece existent dans le stock kant j'entre le nombre apres il me demande le type l a marque le numero apres il arrete il signale ke le programme ne marche plus
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
5 avril 2010 à 12:10
Ah ben dis donc !!! Ca y va les erreurs de syntaxe !!!! ^^
printf("entrer le numero de la piece %d_n",i); 

Tu as mis '_n' au lieu de '\n' !!!!

Après je vois pas trop pourquoi ca plante. Tu pourrais corriger les erreurs que je t'ai signalé , réessayer et si ca plante, ré-afficher le nouveau code avec la coloration syntaxique (comme je l'ai fait)
0
cs_fizou1989 Messages postés 17 Date d'inscription samedi 7 novembre 2009 Statut Membre Dernière intervention 9 janvier 2011
23 avril 2010 à 20:20
salut voila le nouveau code me sa ma marche nn plus#include<conio.h>
#include<stdio.h>
void panne (char[] ,int, char[]);
int verifie(int);

void replace(char[],int,char[]);
void achat(char[],int,char[],int);

typedef struct
{
char type[100];
char marque[100];
int num;
}stock;
main()
{ stock t[100];
char type[100];
char marque[100];
int numero;
int y;
int l;
int n;
int i;
int boolenne=0;
int prix;
printf("entrer le nombre de pieces qui existent dans le stock");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("entrer la marque de la piece %d\n",i);
scanf("%s",t[i].marque);
printf("entrer le type de la piece %d\n",i);
scanf("%s",t[i].type);
printf("entrer le numero de la piece %d_n",i);
scanf("%d",t[i].num);
}
scanf("%d",&boolenne);
if(boolenne==1)
{
printf("il y a une piece en panne ");
panne (type,numero,marque);
y=verifie(numero);
if(y==1)
{
replace(type,numero,marque);
}
else
{

achat(type,numero,marque,prix);
printf("le prix d'achat %d",prix);
scanf("%d",&prix);
}

}

getch();
}
void panne(char type[100],int numero,char marque[100])
{

printf("entrer le numero de la piece en panne %d",numero);
scanf("%d",&numero);
printf("entrer le type de la piece en panne %s",type);
scanf("%s",type);
printf("entrer la marque de la piece en panne %s",marque);
scanf("%s",marque);

}

int verifie(int numero)
{ stock t[100];
int y;
char panne[100];
int matricule;
int i=0;
int n;
printf("entrer le nombre de pieces dans le stock ");
scanf("%d",&n);

for(i=0;i<=n;i++)
{
if(numero == t[i].num)
{
printf("existe dans le stock");
break;
y=1;
}
else
{
printf("la piece n'existe pas");

y=0;


}
return(y);
}




void replace(char type[],int numero,char marque[])
{
int i;
int n;
stock t[100];
char categorie[100];

printf("entrer la categorie de la piece en panne???\n");
scanf("%s",categorie);
printf("entrer le numero de la piece en panne ???\n");
scanf("%d",&numero);

printf("entrer le nombre de piece ");
scanf("%d",&n);

y=0;
for(i=0;i<=n;i++)
{
if(numero == t[i].num)
{
printf("existe dans le stock");
y=1;
break;
}
}
if (y==0)
printf("la piece n'existe pas");


}
}
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
29 avril 2010 à 09:08
Il faudrait que tu donnes plsu de détail. Que fait-il ? Si il y a une erreur quel est le message ?
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
29 avril 2010 à 09:54
Honnetement et sans vouloir être méchant, ton programme est complétement illogique. Tu devrais le refaire en pensant bien à ce que tu veux pour chaque fonction car tu demandes par exemple le numero de la piece numero tant, tu veux une valeur sans l'initialiser. On dirait que tu as mal compris l'énoncé de ton problème.
0
Rejoignez-nous