Problème de code (tri et structure)

Signaler
Messages postés
12
Date d'inscription
samedi 23 décembre 2000
Statut
Membre
Dernière intervention
3 avril 2010
-
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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