Problème de code (tri et structure)

cs_krolis Messages postés 12 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 3 avril 2010 - 15 févr. 2009 à 18:57
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 16 févr. 2009 à 09:48
Salut tout le monde, je rencontre un problème lors de l'exécution de ce
code au niveau du tri par notes. Veuillez m'aidez s'il vous plaît.
Merci d'avance.
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedefstruct{
charnom[40];
charprenom[40];
floatnote;
}fiche;
voidtri_nom(fiche*f);
voidtri_note(fiche*f);

voidtri_nom(fiche*f)
{
inti,j,posit;
chartemp[40];
printf("\n\nTri des noms\n");
for(i=0;i<4;i++)
{posit=i;
for(j=i+1;j<5;j++)
{
if(stricmp(f[j].nom,f[posit].nom)<0)
{
posit=j;
}
}
strcpy(temp,f[i].nom);
strcpy(f[i].nom,f[posit].nom);
strcpy(f[posit].nom,temp);

}

printf("\n\nAffichage du tableau trie par nom\n");
for(i=0;i<5;i++)
{
printf("%s\n",f[i].nom);
}
printf("\n\n");
}

voidtri_note(fiche*f)
{
inti,j,temp;
printf("Tri par note\n");
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if((f[j].note)<(f[i].note))
{
temp=f[j].note;
f[j].note=f[i].note;
f[i].note=temp;
}
}
}
printf("Affichage du tableau trie par note.\n");
for(i=0;i<10;i++)
{
printf("%d\n",f[i].note);
}
printf("\n\n");

}
intmain()
{
fichef[5];inti,j;
printf("Remplissage de fiches de 10 etudiants.\n");
for(i=0;i<5;i++)
{
printf("*******************\n");
printf("Fiche NO %d.\n",i+1);
printf("Nom %d:",i+1);
scanf("%s",&amp;f[i].nom);
printf("Prenom %d:",i+1);
scanf("%s",&amp;f[i].prenom);
printf("Note %d:",i+1);
scanf("%f",&amp;f[i].note);
}
printf("\n\n>*<>*<>*<>*<>*<>*<>*<>*<>*<>*\n\Affichage des 10 fiches.\n");
for(i=0;i<5;i++)
{
printf("***********************\n");
printf("Fiche NO %d\n",i+1);
printf("Nom %d:%s\n",i+1,f[i].nom);
printf("Prenom %d:%s\n",i+1,f[i].prenom);
printf("Note %d:%.2f\n",i+1,f[i].note);
}
tri_nom(&amp;f);
tri_note(&amp;f);
getch();
return0;
}

1 réponse

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 févr. 2009 à 09:48
Salut
Plusieurs remarques:
1) dans la fonction trie par note, tu fais comme si tu avais 10 notes or tu en as que 5. Tu fait donc un débordement de tableau.
2)Il faut que tu passes en paramètres aux fonctions de trie le nombre de fiche que tu as. Cela t'évitera ce genre de problèmes
3)Lorsque tu échanges deux éléments de ton tableau, il faut que tu changes TOUS les champs et pas seulement le champs note ou le champs nom. Sinon, tu auras des notes qui ne correspondent plus aux noms...
A+

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
0
Rejoignez-nous