begin process at 2008 09 06 19:25:32
1 237 931 membres
313 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Prob de tri ds un fichier [ Archives / Au secours ] (RvSpeed)

Prob de tri ds un fichier le 04/06/2003 21:37:48

RvSpeed
Voila je boss sur un truc en ce moment et la j'arrive pas a faire fonctionner correctement le tri de mon fichier sur 2 clées
voici la structure, ma fonction ajout qui appel ma fonction tri qui merde :

struct amis
{char nom[21],prenom[21],num_tel[11],adresse[100];
int code;
}ami,ami1[100];

//fonction d'ajout d'entr,e
void ajout()
{
clrscr();
char a;
FILE *f;
f=fopen("C:\\ami.dat","ab");
textcolor(11);
fflush(stdin);
gotoxy(5,5);
cprintf("Entrez le nom : ");
fgets(ami.nom,21,stdin);
fflush(stdin);
gotoxy(5,6);
cprintf("Entrez le pr,nom : ");
fgets(ami.prenom,21,stdin);
fflush(stdin);
gotoxy(5,7);
cprintf("Entrez le num,ro de t,l,phone : ");
fgets(ami.num_tel,11,stdin);
fflush(stdin);
gotoxy(5,8);
cprintf("Entrez l'adresse : ");
fgets(ami.adresse,101,stdin);
ami.code=0;
fwrite(&ami,sizeof(struct amis),1,f);
while(a!='O' && a!='o'&& a!='N' && a!='n')
{textcolor(CYAN);
gotoxy(5,16);
cprintf("Voulez-vous ajouter une autre personne (O)ui / (N)on : ");
scanf("%c",&a);
if(a=='O' || a=='o')
{fclose(f);
ajout();
}
else
{if(a=='N' || a=='n')
{fclose(f);
tri(); //====>elle est la ste sale bête
}
}
}
fclose(f);

};

//Fonction de triage
void tri() //===>voila le "gros morceau"
{
FILE *f;
int i=0,j,tmp;
f=fopen("C:\\ami.dat","rb");
while(!feof(f) && i!=100)
{
fread(&ami1[i],sizeof(struct amis),1,f);
i++;
}
tmp=i;
for(i=0;i<tmp;i++)//for 1
{
for(j=i+1;j<tmp;j++)//for 2
{
if(strcmp(ami1[i].nom,ami1[j].nom)==0)
{
if(strcmp(ami1[i].nom,ami1[j].nom) <0 )
{
strcpy(ami.nom,ami1[i].nom);
strcpy(ami1[i].nom,ami1[j].nom);
strcpy(ami1[j].nom,ami.nom);
strcpy(ami.prenom,ami1[i].prenom);
strcpy(ami1[i].prenom,ami1[j].prenom);
strcpy(ami1[j].prenom,ami.prenom);
strcpy(ami.num_tel,ami1[i].num_tel);
strcpy(ami1[i].num_tel,ami1[j].num_tel);
strcpy(ami1[j].num_tel,ami.num_tel);
strcpy(ami.adresse,ami1[i].adresse);
strcpy(ami1[i].adresse,ami1[j].adresse);
strcpy(ami1[j].adresse,ami.adresse);
ami.code=ami1[i].code;
ami1[i].code=ami1[j].code;
ami1[j].code=ami.code;
}
}
else
{if(strcmp(ami1[i].prenom,ami1[j].prenom) <0 )
{
strcpy(ami.nom,ami1[i].nom);
strcpy(ami1[i].nom,ami1[j].nom);
strcpy(ami1[j].nom,ami.nom);
strcpy(ami.prenom,ami1[i].prenom);
strcpy(ami1[i].prenom,ami1[j].prenom);
strcpy(ami1[j].prenom,ami.prenom);
strcpy(ami.num_tel,ami1[i].num_tel);
strcpy(ami1[i].num_tel,ami1[j].num_tel);
strcpy(ami1[j].num_tel,ami.num_tel);
strcpy(ami.adresse,ami1[i].adresse);
strcpy(ami1[i].adresse,ami1[j].adresse);
strcpy(ami1[j].adresse,ami.adresse);
ami.code=ami1[i].code;
ami1[i].code=ami1[j].code;
ami1[j].code=ami.code;
}
}
}//fin for 2
}//fin for 1
fclose(f);
f=fopen("C:\\ami.dat","wb");
for(i=0;i<tmp;i++)
{if(ami1[i].code==0)
fwrite(&ami1[i],sizeof(struct amis),1,f);
}
fclose(f);
menu();
};//fin tri

PLZ help me!!! je c plus quoi faire. Pourtant j'ais appliquer l'algorithme de tri de mon cour d'analyse


Classé sous : num, ami, prenom, strcpy, ami1

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS