salut à tous
voici c que je peux faire comme solution de ce programme et j’essayais de l’excuter avec dev c++ ou turbo C mais ça marche plus
…voici le
#include<stdio.h>
#include<conio.h>
#include<string.h>
Void file_open(FILE **fp)
{ char *s;
int x;
(
do {
printf(? donner le nom de fichier.txt :?)
gets(s) ;
if ( ! *fp=fopen(s, ?r++?))
{ printf(?erreur d?ouverture?);
x=0;
else
x=1;
}while(!x);
}
struct donner
{char code[4];
char desg[21];
char prix[8];
char fourn[11] ;
} ; typedef struct donner DONNER ;
struct liste
{ DONNER t ;
struct liste *next ;
} ; typedef struct liste LISTE ;
int choix_champ()
{ int x ;
Do
{ clrscr() ;
printf(?tapez votre choix : ?) ;
printf(? \n1 ? pour e code : ?) ;
printf(? \n1 ? pour e designation : ?) ;
printf(? \n1 ? pour e prix : ?) ;
printf(? \n1 ? pour e stock : ?) ;
printf(? \n1 ? pour e fournisseur : ?) ;
scanf(?%d ?,&x) ;
}
While(x !=1 && x!=2 && x!=3 && x!=4 && x!=5);
return(x);
}
Void tri_code(FILE *fp)
{ long t ;
char s[51] ;
char r[51] ;
char cod[4] ;
char code[4];
int i=0;
while(fgets(s,50,fp))
{ sscanf(s,?%3s?,cod);
While(fgets(r,50,fp))
{ sscanf(r,?%3s?,code);
If(strcmp(cod,code)>0)
{t=ftell(fp);
strcpy(cod,code);
fseek(fp,-46L,SEEK_CUR);
fputs(s,fp);
fseek(fp,(46i)L,SEEK_SET);
fputs(r,fp);
fseek(fp,tL,SEEK_SET);
}
}
i++;
fseek(fp,(46i)L,SEEK_SET);
}
}
Void tri_des(FILE *fp)
{ long t ;
char s[51] ;
char r[51] ;
char des[4] ;
char desg[21] ;
int i=0 ;
while(fgets(s,50,fp))
{ sscanf(s+3, ?%20s?,des);
While(fgets(r,50,fp))
{ sscanf(r+3,?%20s?,desg);
If(strcmp(des,desg)>0)
{t=ftell(fp);
strcpy(des,desg);
fseek(fp,-46L,SEEK_CUR);
fputs(s,fp);
fseek(fp,(46i)L,SEEK_SET);
fputs(r,fp);
fseek(fp,tL,SEEK_SET);
}
}
i++;
fseek(fp,(46i)L,SEEK_SET);
}
}
Void tri_prix(FILE *fp)
{ { long t ;
char s[51] ;
char r[51] ;
char pri[8] ;
char prix[8] ;
int i=0 ;
while(fgets(s,50,fp))
{ sscanf(s+23, ?%7s?,pri);
While(fgets(r,50,fp))
{ sscanf(r+23,?%7s?,prix);
If(strcmp(pri,prix)>0)
{t=ftell(fp);
strcpy(pri,prix);
fseek(fp,-46L,SEEK_CUR);
fputs(s,fp);
fseek(fp,(46i)L,SEEK_SET);
fputs(r,fp);
fseek(fp,tL,SEEK_SET);
}
}
i++;
fseek(fp,(46i)L,SEEK_SET);
}
}
Void tri_stock(FILE *fp)
{ { long t ;
char s[51] ;
char r[51] ;
char stoc[6] ;
char stock[6] ;
int i=0 ;
while(fgets(s,50,fp))
{ sscanf(s+30, ?%5s?,stoc);
While(fgets(r,50,fp))
{ sscanf(r+30,?%5s?,stock);
If(strcmp(stoc,stock)>0)
{t=ftell(fp);
strcpy(stoc,stock);
fseek(fp,-46L,SEEK_CUR);
fputs(s,fp);
fseek(fp,(46i)L,SEEK_SET);
fputs(r,fp);
fseek(fp,tL,SEEK_SET);
}
}
i++;
fseek(fp,(46i)L,SEEK_SET);
}
}
Void tri_fourn(FILE *fp)
{ { long t ;
char s[51] ;
char r[51] ;
char four[11] ;
char fourn[11] ;
int i=0 ;
while(fgets(s,50,fp))
{ sscanf(s+35, ?%10s?,four);
While(fgets(r,50,fp))
{ sscanf(r+35,?%10s?,fourn);
If(strcmp(four,fourn)>0)
{t=ftell(fp);
strcpy(four,fourn);
fseek(fp,-46L,SEEK_CUR);
fputs(s,fp);
fseek(fp,(46i)L,SEEK_SET);
fputs(r,fp);
fseek(fp,tL,SEEK_SET);
}
}
i++;
fseek(fp,(46i)L,SEEK_SET);
}
}
Void affiche (FILE *fp)
{ char s[51];
While (fgets(s,50,fp))
{
puts(s);
printf(?\n?);
}
getch();
}
Void trie_fichier(FILE *fp)
{ int x ;
x=choix_champ() ;
switch(x)
{ case ?1? :tri_code(fp) ; break ;
case ?2?:tri_des(fp);break;
case ?3?:tri_prix(fp);break;
case ?4?:tri_stock(fp);break;
case ?5?:tri_fourn(fp);break;
}
affiche(fp);
}
Int charge_tab( DONNER tab[],FILE *fp)
{ char s[51];
int i=0;
while (fgets(s,50,fp))
{ sscanf(s,?%3s%20s%7s%5s%10s?,tab[i].code,tab[i].desg,tab[i].prix,tab[i].stock,tab[i].fourn);
i++;
}
return(i);
}
Void permuter(char *s1,char *s2)
{ char *K;
strcpy(K,s1);
strcpy(K,s2);
strcpy(s2,K);
}
Void tri_tab_code(DONNER tab[],int nb)
{ int i,j ;
for(i=0 ;i<nb ;i++)
{ for(j=I;j<nb;j++)
{ if(strcmp(tab[i].code,tab[j].code)>0)
permuter(tab[i].code,tab[j].code);
}
}
}
Void tri_tab_des(DONNER tab[],int nb)
{ int i,j ;
for(i=0 ;i<nb ;i++)
{ for(j=I;j<nb;j++)
{ if(strcmp(tab[i].des,tab[j].des)>0)
permuter(tab[i].des,tab[j].des);
}
}
}
Void tri_tab_stock (DONNER tab[],int nb)
{ int i,j ;
for(i=0 ;i<nb ;i++)
{ for(j=I;j<nb;j++)
{ if(strcmp(tab[i].stock,tab[j]stock)>0)
permuter(tab[i].stock,tab[j].stock);
}
}
}
Void tri_tab_fourn(DONNER tab[],int nb)
{ int i,j ;
for(i=0 ;i<nb ;i++)
{ for(j=I;j<nb;j++)
{ if(strcmp(tab[i].fourn,tab[j].fourn)>0)
permuter(tab[i].fourn,tab[j].fourn);
}
}
}
Void tri_tab_prix(DONNER tab[],int nb)
{ int i,j ;
for(i=0 ;i<nb ;i++)
{ for(j=I;j<nb;j++)
{ if(strcmp(tab[i].prix,tab[j].prix)>0)
permuter(tab[i].prix,tab[j].prix);
}
}
}
Void charge_tab_trie(DONNER tab[],FILE *fp)
{ int x,nb;
nb=charge_tab(tab);
x=choix_champ();
switch(x)
{ case?1? :tri_tab_code(tab,nb) ;break ;
case?1? :tri_tab_des(tab,nb) ;break ;
case?1? :tri_tab_prix(tab,nb) ;break ;
case?1? :tri_tab_stock(tab,nb) ;break ;
case?1? :tri_tab_fourn(tab,nb) ;break ;
}
}
Void charge_lis(LISTE *a,FILE *fp)
{ char s[51];
LISTE *p;
LISTE *der;
While(fgets(s,50,fp))
{ p=(LISTE*)malloc(sizeof(LISTE);
sscanf(s,?%3s%20s%7s%5s%10?,p->t.code,p->t.desg,p->t.prix,p->t.stock,p->t.fourn);
p->next=NULL;
if(a)
der->next=p;
else
a=p;
}
}
Void tri_lis_code(LISTE *a)
{ LISTE *p ;
LISTE *d ;
p=a ;
if(a)
{ for(;p->next;p=p->next)
{ for(d=p->next;d;d=d->next)
{ if(strcmp(p->t.code,d->t.code)>0)
permuter(p->t.code,d->t.code);
}
}
}
}
Void tri_lis_des(LISTE *a)
{ LISTE *p ;
LISTE *d ;
p=a ;
if(a)
{ for(;p->next;p=p->next)
{ for(d=p->next;d;d=d->next)
{ if(strcmp(p->t.des,d->t.des)>0)
permuter(p->t.des,d->t.des);
}
}
}
}
Void tri_lis_prix(LISTE *a)
{ LISTE *p ;
LISTE *d ;
p=a ;
if(a)
{ for(;p->next;p=p->next)
{ for(d=p->next;d;d=d->next)
{ if(strcmp(p->t.prix,d->t.prix)>0)
Permuter(p->t.prix,d->t.prix);
}
}
}
}
Void tri_lis_stock(LISTE *a)
{ LISTE *p ;
LISTE *d ;
p=a ;
if(a)
{ for(;p->next;p=p->next)
{ for(d=p->next;d;d=d->next)
{ if(strcmp(p->t.stock,d->t.stock)>0)
Permuter(p->t.stock,d->t.stock);
}
}
}
}
Void tri_lis_fourn(LISTE *a)
{ LISTE *p ;
LISTE *d ;
p=a ;
if(a)
{ for(;p->next;p=p->next)
{ for(d=p->next;d;d=d->next)
{ if(strcmp(p->t.fourn,d->t.fourn)>0)
Permuter(p->t.fourn,d->t.fourn);
}
}
}
}
Void charge_lis_tri (LISTE **a,FILE *fp)
{
charge_lis(a,fp);
x=choix_champ();
switch(x)
{ case?1? :tri_lis_code(tab,nb) ;break ;
case?1? :tri_lis_des(tab,nb) ;break ;
case?1? :tri_lis_prix(tab,nb) ;break ;
case?1? :tri_lis_stock(tab,nb) ;break ;
case?1? :tri_lis_fourn(tab,nb) ;break ;
}
}
Void main()
{ FILE fp;
LISTE *a=NULL;
DONNER tab[];
fileopen(&fp)
do
{ clrscr();
gotoxy(20,10);printf(?MENU PRINCIPALE ?);
gotoxy(10,20);printf(?trie de fichier 1?);/avec affichage trie/
gotoxy(10,25) ;printf(?trie de tableau 2 ?) ;/apres chargement/
gotoxy(10,30) ;printf(?trie de liste chainée 3 ?) ;/apres chargement/
gotoxy(10,35) ;printf(?quitter 4?) ;
gotoxy(10,40) ;printf(?tapez votre choix ?) ;scanf(? %d?,&x) ;
switch()
{ case ?1? : trie_fichier(fp) ;break ;
case?2?:charge_tab_tri(tab,fp);break;
case?3?:charge_lis_tri(&a,fp);break;
case?4?:break;
}
}
While(x!=4);
gtech();
}
et merci je vous attends vos aider (sur mon mail nehlouta@yahoo.fr) et merci
Edité le 22/10/2007 à 19:05