cs_bossou
Messages postés71Date d'inscriptionvendredi 2 juin 2006StatutMembreDernière intervention 7 octobre 2011
-
11 déc. 2007 à 17:35
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 2013
-
12 déc. 2007 à 20:16
bonjour à tous j'ai besoin que quelqu'un m'aide SVP à voir la faille dans un programme que j'ai écris. je n'arrive pas à afficher les chaines; de caractères , les float et à afficher les informations que j'insère quand je lance le menu insérer. Aider moi SVP à y voir clair.
merci
while( (p!=NULL) && (p->codeville>x) )
{
q=p;
p=p->suivant;
}
// if(debut_ville->codeville==x)
// {
// printf("\n Cet enregistrement existe d‚j… dans la liste");
// }
// else
// {
v->suivant=p;
q->suivant=v;
// }
}
}
else
{
debut_ville=v;
v->suivant=NULL;
}
// printf("\n Voulez vous ajouter un magasin dans cette ville? ");
// scanf("%c",&rep);
// if(rep)
// {
v->suivantmag=inserer_magasin();
// }
}
return debut_ville;
}
void afficher_ville( ville *d)
{
int i;
char *nom;
ville *v=d;
article *a;
magasin *m;
printf("\n\n.......................A F F I C H A G E..........................\n\n");
while(v!=NULL)
{
printf("\n\n Le code de r‚f‚rence de la ville est : %d",v->codeville);
m=v->suivantmag;
while(m!=NULL)
{
printf("\n Le code de r‚f‚rence du magasin est : %d",m->codemag);
a=m->suivantart;
while(a!=NULL)
{
printf("\n Le code de r‚f‚rence de l'article est: %d",a->codeart);
a=a->suivant;
}
m=m->suivant;
}
v=v->suivant;
}
}
void quitter()
{
printf("\n\n PROGRAMME TERMINER\n\n");
printf("\n\n Tapez une touche pour quitter le programme\n\n");
printf("....... MERCI ET A BIENTOT.......");
}
void menu2()
{
int choix;
ville *v;
article *a;
magasin *m;
do
{
printf("\n\n BIENVENUE DANS LE MENU 2 DE CE PROGRAMME\n\n ");
printf("\n\n.....................M E N U 2..........................\n\n");
printf("\n 1. INSERER UNE VILLE\n");
printf("\n 2. QUITTER L'APPLICATION\n");
printf("\n ENTRER VOTRE CHOIX: ");
scanf("%d",&choix);
switch(choix)
{
case 1:
inserer_ville();
break;
case 2:
quitter();
break;
}
} while(choix!=2);
}
void menu1()
{
int choix;
ville *v;
article *a;
magasin *m;
do
{
printf("\n\n BIENVENUE DANS LE MENU 1 DE CE PROGRAMME\n\n");
printf("\n\n.....................M E N U 1..........................\n\n");
printf("\n 1. CREER UNE VILLE ET SES COMPOSANTS\n");
printf("\n 2. AFFICHER LES ENREGISTREMENTS\n");
printf("\n 3. INSERER DE NOUVEAUX ENREGISTREMENTS\n");
printf("\n 4. QUITTER L'APPLICATION\n");
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 11 déc. 2007 à 18:03
une petite gaterie et un mars avec ca !!
en plus ton code c du c !
pour finir, si t'avais écrit ca, tu saurais trouver l'erreur ...
donc, pomper n'est pas gagner ....
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 12 déc. 2007 à 14:40
mabrouklepoux> Si c'est pour répondre n'importe quoi autant t'abstenir. Je ne vois rien de constructif ou meme de censé dans ce que tu dis.
bossou> Lorsque tu mets un bloc de code, ca ne donne pas envie d'essayer de comprendre. Soit plus précis sur le problème que tu as, et ne mets que le bout de code concérné.
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 12 déc. 2007 à 20:16
Salut,
J'ai jete un bref coup d'oeil dans ton code et je remarque plusieurs lacunes et erreurs. Je ne vais te citer que les plus importantes qui sautent aux yeux :
1- TOUTES tes variables sont locales. ce qui fait que lorsque tu crees une ville (par exemple) , elle est bel et bien creee , seulement tu la retournes mais aucune autre variable ne sauvegarde le debut de la liste :
menu1() -- a chaque fois que tu crees une ville, la variable v pointe sur la prochaine ville creee(et celle d'avant?elle est sauvegardee ou?), ce qui fait que a l'affichage lorsque tu cherches a afficher le magasin ou la liste des villes , tu n'auras rien puisque c une ville nouvellement creee (donc vide).
-- article *a et magasin* m ne servent a rien;
menu2() -- a cause de la grosse erreur du menu1(), tu essaies d'inserer une ville dans aucune liste , puisque les variables declarees au debut de la fonction ne pointe sur rien. Tu crees une ville , et dans la boucle tu fais 2 grosses erreurs:
- en creant la premiere ville debut_ville va pointer sur v (ton prog devrait meme crasher car ce n'est pas garantie qu'un pointeur declare mais non instancie-initialise pointe sur NULLsuivant = NULL</gras>; - a la 2eme iteration vu que debut_ville pointe sur v , si le codeville est > x , v->suivant <gras>debut_ville et debut_ville v. </gras>Je te rappelle qu'a la 1ere erreur la ville suivante egale la ville actuelle. ce qui veut dire en fait que tu ne vas modifier que les infos de la meme ville
3eme erreur - lorsque le codeville< =x tu veux iterer a partir de p =debut_ville. de 2 choses l'une: debut_ville->suivant <gras>NULL (1ere erreur) : p</gras> NULL so plus tard tu reviens a la meme chose qu'a la 2eme erreur: soit la ville suivante est la ville elle-meme. debut_ville->suivant <gras>debut_ville(du a debut_ville v</gras> et v->suivant = debut_ville : ) il y a un truc pas tres catholique qui va se produire : CRASH DE PROGRAMME </gras> car p = debut_ville et p->suivant = = p , et en partant (nous sommes dans le else) debut_ville->codeville<=x . so ta boucle while( p! =NULL && p->codeville>x), tu n'y entreras jamais , donc q qui ne pointe sur aucune ville , tu essaies d'acceder a sa ville suivante q->suivant=v.
Ca c juste quelques erreurs , et yen a des tonnes similaires a celles-la. Please, relis ton programme avec attention (surtout l'algorithme), si tu es en C , utilises des variables globales ou locales a la fonction main que tu passeras en parametres dans les fonctions sous-jacentes, recuperes toujours les valeurs de retour des fonctions(sinon crees des procedures), et de grace mais de grace 3 choses: (1)initialises tes pointeurs, (2)verifies qu'ils pointent sur la bonne structure avant d'acceder aux variables et/ou fonctions membres et (3) cree des fonctions qui permettront de liberer la memoire allouee par tes fonctions creer_...
J'espere avoir aide, salut
je suis heureux de faire partie d'une grande famille ...!