Programme en C de gestion

Signaler
Messages postés
17
Date d'inscription
samedi 7 novembre 2009
Statut
Membre
Dernière intervention
9 janvier 2011
-
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
-
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

Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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.
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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.
Messages postés
17
Date d'inscription
samedi 7 novembre 2009
Statut
Membre
Dernière intervention
9 janvier 2011

merci j ai commis des erreurs graves mais aussi il ne fonctionne pas j ai meme supprimer la fonction achats et sa marche po
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
C'est à dire ? Il fait quoi ? Décris précisement !
Messages postés
17
Date d'inscription
samedi 7 novembre 2009
Statut
Membre
Dernière intervention
9 janvier 2011

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
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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)
Messages postés
17
Date d'inscription
samedi 7 novembre 2009
Statut
Membre
Dernière intervention
9 janvier 2011

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


}
}
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
Il faudrait que tu donnes plsu de détail. Que fait-il ? Si il y a une erreur quel est le message ?
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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.