Forum Clubic

Un probleme en language C

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,(46
i)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,(46
i)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,(46
i)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,(46
i)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,(46
i)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

Tu ne devrais pas laisser ton adresse en clair sur les forums

Si tu veux de l’aide, il faut que tu nous dises d’abord où tu en es rendue, et sur quels points particuliers tu bloques.(saisie du nom, ouverture du fichier, chargement de la structure, tri des articles etc .)

Salut,

Pour l’instant tu as tout faux sur la façon d’écrire un message sur les forums clubic (cf charte)

  • Modifie ton titre afin de le rendre plus explicite et d’y préciser le langage utilisé (champ tag).
  • J’ai enlevé ton mail pour éviter le spam.
  • Ici on aide les gens, mais on ne faitle boulot à leur place, donc tu vas nous expliquer ce que tu n’arrives pas à faire et ajoutant éventuellement le bout de code qui te pose problème.Mais ne compte pas sur nous pour t’offrir un programme tout fait.

Merci de ta compréhension :jap:

Salut,

Comme l’a dit guymage on ne te filera pas la solution sur un plateau mais on peut t’aider à y arriver. Je te conseillerai donc de commencer par faire une belle annalyse descandante suivi d’un bel organigramme (oui le truc chiant à faire que le prof adore mais qui aide quand le programme gagne en complexité) afin de décomposer et structurer le programme au maximum. Code ensuite par sous programme et reserve le main au menu. Et si ca coince vraiment reviens nous voir avec quelque chose de précis! Bonne prog!

salut à tous
je vous attends encore …vous me repondez pas encore

Le programme est supposé faire quoi :confused:

Je doute qu’on t’aidera si tu nous aides pas hein…