aider moi a compiler mon code

aider moi a compiler mon code - C++ - Programmation

Marsh Posté le 07-12-2010 à 21:56:09    

bonjour,  
je demande d'aide   sur les arbres binaire car je travaille dessus:
 j'ai fait un code en Dev C++ dont le but de lire et extraire les données d'un fichier bien défini qui est structurer d'une telle maniere .
mon programme je l'ai fait de telle sorte me demande d'écrire le nom de fichier puis il va le récupérer pour un traitement éventuel mais moi je bloque ici avant la récupération.
 
 
ci dessous mon code;  
 
 
#include <stdlib.h>
 #include <stdio.h>
 
                          /*INCLUDES*/
#include <windows.h>
#include<winsock2.h>
#include <mem.h>
#include <stdio.h>
#include <dos.h>
#include <myconio.h>
#include <malloc.h>
#include <errno.h>
#include <stdlib.h>
//#include <dir.h>
#include <string.h>
 
/*les defenitions*/
 
#define vide printf("\n" );
 #define ATT_FONT_G        BLUE
#define ATT_TEXT_G        WHITE        /* definition des couleurs du menu des modules */
#define ATT_FONT_MESS     RED
#define ATT_TEXT_MESS     WHITE
 
#define MAXPATH  2
#define MAXDRIVE 2
#define MAXFILE 10
#define MAXDIR 10
#define MAXEXT 10
 
 
                  /*TOUCHE CLAVIER*/
#define  ESC 27
#define  ret 10                /* définition les touches de clavier utilisées */
#define  espace 32    
#define  arr 46
#define  f1 113
 
 
                         /*PROTOTYPE*/
 void menu_haut1();  
 void menu_haut2();
 void cadre();
 void info(const char * txt);
 
 void construction_n_fich(char *n_fich,const char *type,int cle);      
char *acq_nfich(const char *ch,const char *mode);      
 void message(char *ch);
 void exit_prg();
 void effacefenetre(int dc,int dl,int fc,int fl,int att_font,int att_text);  /* effacer une fent */
 void fenetre(int dc,int dl,int fc,int fl,int att_rect,int att_font); /* colorer une fent rectangulaire */
void rectangl(int dc, int dl,int longer, int larg);             /* rectangle */
int lec_fich(FILE *p);                                       /* lecture du fichier *.arb */
 
 void error_message(int fc,const char *ch);  
 
     
   
 
                            /*PROGRAMME PRINCIPALE */
 int main ()
 {
       
      char *nfich1;
      cadre();
     
    info("VEUILLEZ APPUYER SUR UNE TOUCHE SVP POUR ACCEDER A L'APLLICATION" );
     
 
 
menu_haut2();
 
   menu_haut1();
   nfich1=acq_nfich("NOM DE FILE : ...............(arb)","rt" );
  // clrscr();
 
 
      return 0;
      }
 
                                  /*FONCTION*/
void menu_haut1()
{
     int i;
     char *nfich1;
   int tch,cle;
  effacefenetre(1,1,80,25,ATT_FONT_G + RED,ATT_TEXT_G);
   
  //window(1,25,80,25);
textcolor(WHITE); textbackground(BLUE);  
clrscr();
   gotoxy(30,1);
  printf("* LOGIQUE *" );
 gotoxy(50+1,2+1);
   textcolor(BLACK);  
   textbackground(WHITE);  
   gotoxy(35+1,20+1);
   cprintf(" ESC-Quit                 F1-Aide\n" );
   //window(1,1,80,1);
   
 getch();
 
 nfich1=acq_nfich("NOM DE L'AdD : ..................(arb)","rt" );
//getch();
  fenetre(1,2,80,24,ATT_TEXT_G,ATT_FONT_G);
   
  do{
   
      gotoxy(15,1);
      printf("INTRODUCTION DES DONNEES LOGIQUES D'UN AdD\n" );
     getch();
      tch=getch();
      switch(tch){
       case ESC:   exit(0);
       case  f1:   ; printf("vous voulez d'aide\n" ); break;
       default:   cle=0; break;}
      } while(cle==1);
    getch();
}
 
void menu_haut2()
  {
    int tch,cle;
    effacefenetre(1,2,80,23,ATT_FONT_G,ATT_TEXT_G);
    //window(1,25,80,25);
    textcolor(BLACK); textbackground(WHITE); clrscr();
    gotoxy(2,2);
   cprintf("  ESC-Quit              F1-Aide" );
   // window(1,1,80,1);
    textcolor(BLACK); textbackground(WHITE); clrscr();
    gotoxy(35,1);
    cprintf("* KUMAMOTO *" );
    fenetre(1,2,80,20+3,ATT_TEXT_G,ATT_FONT_G+RED);
    do{
      gotoxy(10,10);
      printf("  RECHERCHE DES ENSEMBLES MINIMAUX D'UN SYSTEME NON COHERENT " );
      gotoxy(25,12);
      printf("PAR LA METHODE DESCENDANTE ." );
      tch=bioskey(0);
      switch(tch){
       case ESC:   exit(0);
       case  f1:   cle=1;printf(" vous voulez d'aide\n" ); break;
       default:    cle=0; break;}
     } while(cle==1);
     getch();
     effacefenetre(3,3,78,23,ATT_FONT_G,ATT_TEXT_G);
    gotoxy(7,0);
   }
   // Affiche dans un cadre
void info(const char * txt)
{
     int i;
     textcolor(WHITE);
     textbackground(GREEN);  
     
   gotoxy(2,9); printf("%c",201); for( i=0; i<75; i++) printf("%c",205); printf("%c",187);
   gotoxy(2,10); printf("%c %s",186,txt); gotoxy(3+75,10);      printf("%c",186);
   gotoxy(2,11); printf("%c",200); for( i=0; i<75; i++) printf("%c",205); printf("%c",188);
   
 }
 
// Créer le cadre  
void cadre()
{
     int i;
    textcolor(WHITE);
 textbackground(BLUE);
   printf("\n" );
   for( i=0; i < 70; i++) printf("%c",223);
   printf("\n" );
   for( i=0; i < 20; i++) printf("%c \t\t\t\t\t\t\t\t     %c\n",223,223);
   for( i=0; i < 70; i++) printf("%c",223);
}
 
 
void construction_n_fich(char *n_fich,const char *type,int cle)  
{
     char FILENAME;
    int flag;
    char drive[2],file[MAXFILE],ext[MAXEXT],dir[MAXDIR];
    char s[MAXPATH];
 
  flag=fnsplit(n_fich,drive,dir,file,ext);
   
    if(flag&FILENAME)
    strcpy(ext,type);
    if(cle==1)          
    fnmerge(n_fich,NULL,NULL,file,ext);
    else
   
fnmerge(n_fich,drive,dir,file,ext);
}
 
void message(char *ch)
{
   int tch;
   
   textcolor(ATT_FONT_MESS);
   textbackground(WHITE);
   gotoxy(7,0);
   clrscr();
   cprintf("%s",ch);
   tch=bioskey(0);
   switch(tch){
     case f1:    printf("VOUS VOULEZ D'AIDE? CONTACTER SMAIL\n" );break;
     case ESC:   exit_prg();
     default:    clrscr(); break;}
}
 
 
void exit_prg()
{
  effacefenetre(1,1,80,25,BLACK,BLACK);
  gotoxy(7,0);
  exit(0);
  }
 
void effacefenetre(int dc,int dl,int fc,int fl,int att_font,int att_text)
{
   
   textbackground(att_font);
   textcolor(att_text);
   clrscr();
   
}
 
void fenetre(int dc,int dl,int fc,int fl,int att_rect,int att_font)
{
   
  textcolor(BLUE);
  textbackground(YELLOW);
  clrscr();
  rectangl(1,1,fc,fl);
 gotoxy(7,0);
 
 
  }
 
void rectangl(int dc, int dl,int longer, int larg)
{
  int i ;
   char c1='Í' ,c2='É',c3='¼',c4='»',c5='È',c6='º';
 
  for(i=0;i<longer-1;i++)
 { gotoxy(dc+i+1,dl);
    cprintf("Í" );   }
 
  for(i=0;i<longer-1;i++)
   { gotoxy(dc+i+1,larg+1);
     cprintf("Í" );}
 
  for(i=1;i<=larg-1;i++)
  { gotoxy(dc,dl+i);
    cprintf("º" );}
 
  for(i=1;i<=larg-1;i++)
  {  
                         
  gotoxy(longer,dl+i);
    cprintf("º" );}
 
  gotoxy(dc,dl);         cprintf("É" );
  gotoxy(longer,dl);     cprintf("»" );
  gotoxy(dc,larg+1);     cprintf("È" );
  gotoxy(longer,larg+1); cprintf("¼" );
   }
 
 
 
 
int lec_fich(FILE *p)  // la fonction de lecture des données de mon file
  {
                   
 
       unsigned  int i,j,i1;
       int a;
       int NP,NE,NBE;
       char *chaine,*ch;
       int *E;
       
 
     fscanf(p,"%d",&NP);
     fscanf(p,"%d",&NE);
     fscanf(p,"%d",&NBE);
     
if((p=malloc(NP*(NE+1)*sizeof(chaine)))==NULL)
 { error_message(62,"Mémoire insuffisante pour cet AdD. ESC" ); exit(0);
    }
     if((E=malloc(NP*sizeof(int)))==NULL)
 { error_message(62,"M‚moire insuffisante pour cet AdD. ESC" ); exit(0);}
     for(i=0;i<NP;i++)
 {
 fscanf(p,"%s",(p+0+i*(NE+1))->ch);
 
       a=strlen((p+0+i*(NE+1))->ch);
 
       if(strncmp((p+0+i*(NE+1))->ch,"g+",2)!=0
     && strncmp((p+0+i*(NE+1))->ch,"g*",2)!=0
     && strncmp((p+0+i*(NE+1))->ch,"n+",2)!=0
     && strncmp((p+0+i*(NE+1))->ch,"n*",2)!=0
     && strncmp((p+0+i*(NE+1))->ch,"gx",2)!=0
     ) return(0);
 else if(a<3)  return(0);
       else  {  for(i1=2;i1<a;i1++)
         if((isdigit((p+0+i*(NE+1))->ch[i1]))==0) return(0);}
 
       a=extrait((p+0+i*(NE+1))->ch); if(a<0||a>NP-1)    return(0);
 
      fscanf(p,"%u",(E+i));
 if(*(E+i)<0 ||*(E+i)> NE) return(0);
      for(j=1;j<=*(E+i);j++)
 {  fscanf(p,"%s",(p+j+i*(NE+1))->ch);
    a=strlen((p+j+i*(NE+1))->ch);
   if(strncmp((p+j+i*(NE+1))->ch,"g+",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"g*",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"n+",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"n*",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"gx",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"e+",2)!=0
       && strncmp((p+j+i*(NE+1))->ch,"e-",2)!=0
       ) return(0);
   else if(a<3)  return(0);
  else {  for(i1=2;i1<a;i1++)
   if((isdigit((p+j+i*(NE+1))->ch[i1]))==0) return(0);}
 
   a=extrait((p+j+i*(NE+1))->ch);
 
   if(strncmp((p+j+i*(NE+1))->ch,"g+",2)==0
  || strncmp((p+j+i*(NE+1))->ch,"g*",2)==0
  || strncmp((p+j+i*(NE+1))->ch,"n*",2)==0
  || strncmp((p+j+i*(NE+1))->ch,"n+",2)==0
  || strncmp((p+j+i*(NE+1))->ch,"gx",2)==0)
         { if(a<0||a>NP-1)    return(0); }
     else if(strncmp((p+j+i*(NE+1))->ch,"e+",2)==0
        || strncmp((p+j+i*(NE+1))->ch,"e-",2)==0 )
      { if(a<0||a>NBE)    return(0); }}
  }
    fclose(p);
    return(1);
   }
void error_message(int fc,const char *ch)
{
    int dc=20,dl=10,fl=12;
    int cle=0,tch;
    fenetre(dc,dl,fc,fl,ATT_TEXT_MESS,ATT_FONT_MESS);
     
    gotoxy(2,1);
    cprintf("%s",ch);
     do{
       tch=bioskey(0);
       switch(tch){
       case ESC
       :    clrscr(); cle=1; break;
       defaulte:    cle=0;break;
       }} while(cle==0);
     effacefenetre(dc,dl,fc,fl,ATT_FONT_G,ATT_TEXT_G);
}
 
 
 
 
int extrait(char *ptr)
  {
    int n1;
    n1=atoi(ptr+2);
    return(n1);
   }
 void gprintf(int *p,int lig ,int col)
   {
     int i,j;
     printf("\n" );//vide;
     for(i=0;i<lig;i++)
       { for(j=0;j<col;j++)
  printf("% d",*(p+j+i*col));
     printf("\n" );}
    }
 
 
 
     
 char *acq_nfich(const char *ch,const char *mode)
   {
      char *nfich;
       FILE *fp;
       int NBE,NE,NP,dc1=15,dl1=10,fc1=65,fl1=12;
 
    do{
       fenetre(dc1,dl1,fc1,fl1,BLUE,WHITE);
       gotoxy(dc1+2,dl1+1);
       cprintf("%s",ch);
      // nfich=ascanf(MAXPATH,dc1+strlen(ch)-12,dl1+1,fc1-2,fl1-1);
     //  construction_n_fich(nfich,".arb",0);
       if((fp=fopen(nfich,mode))==NULL)
        {  
        free(nfich);
         message("Erreur d'ouverture !" );}
       }while(fp==NULL);
       effacefenetre(dc1,dl1,fc1,fl1,BLUE,WHITE);
   if(!(lec_fich(fp))||NP==0||NBE==0||NE==0)
      {  
      error_message(50,"Erreur de format. ESC" ); exit(0);}
     return(nfich);
    }
 
 
 
la fonction de lecture de mon file ça marche pas  
 
* tout les variable sont connue , elles nous donnent des information sur notre file or notre arbre car mon fichier contient un arbre dont a un structure bien defini
NP nmbre de porte logique
NE nmbre événement
NBE nmbre maximal des entree d'une porte
nfich==nom de mon arbre ou fichier dont je traite
les g signifient gate or porte qui sont dans mon file  
les e sont les entrees des portes qui sont dans file  
 
or mon file structuré sous forme des ligne chaque ligne presente une porte suivi des ces entrées ..
 
*j'arrive pas à fonctionner la ta traduction de la touche appuyer pour que mon prog exécute exemple quand je clic sur ESC mon programme doit sortir ou F1 pour demander d'aide ...etc
 
 

Reply

Marsh Posté le 07-12-2010 à 21:56:09   

Reply

Marsh Posté le 07-12-2010 à 23:44:28    

Tu as déjà poster une dizaine de sujet dans ce forum et toutjours pas capable d'utiliser les balises code pour afficher ton code source...


---------------
Seul Google le sait...
Reply

Marsh Posté le 08-12-2010 à 09:36:25    

Je me suis arrêté, sur ce sujet en "C++", à la ligne :
 

Code :
  1. #include <stdlib.h>


 
Je ne suis pas allé plus loin [:psychokwak]

Reply

Marsh Posté le 08-12-2010 à 09:58:03    

breizhbugs a écrit :

Tu as déjà poster une dizaine de sujet dans ce forum et toutjours pas capable d'utiliser les balises code pour afficher ton code source...


Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. /*INCLUDES*/
  4. #include <windows.h>
  5. #include<winsock2.h>
  6. #include <mem.h>
  7. #include <stdio.h>
  8. #include <dos.h>
  9. #include <myconio.h>
  10. #include <malloc.h>
  11. #include <errno.h>
  12. #include <stdlib.h>
  13. //#include <dir.h>
  14. #include <string.h>
  15. /*les defenitions*/
  16. #define vide printf("\n" );
  17. #define ATT_FONT_G BLUE
  18. #define ATT_TEXT_G WHITE /* definition des couleurs du menu des modules */
  19. #define ATT_FONT_MESS RED
  20. #define ATT_TEXT_MESS WHITE
  21. #define MAXPATH 2
  22. #define MAXDRIVE 2
  23. #define MAXFILE 10
  24. #define MAXDIR 10
  25. #define MAXEXT 10
  26. /*TOUCHE CLAVIER*/
  27. #define ESC 27
  28. #define ret 10 /* définition les touches de clavier utilisées */
  29. #define espace 32
  30. #define arr 46
  31. #define f1 113
  32. /*PROTOTYPE*/
  33. void menu_haut1();
  34. void menu_haut2();
  35. void cadre();
  36. void info(const char * txt);
  37. void construction_n_fich(char *n_fich,const char *type,int cle);
  38. char *acq_nfich(const char *ch,const char *mode);
  39. void message(char *ch);
  40. void exit_prg();
  41. void effacefenetre(int dc,int dl,int fc,int fl,int att_font,int att_text); /* effacer une fent */
  42. void fenetre(int dc,int dl,int fc,int fl,int att_rect,int att_font); /* colorer une fent rectangulaire */
  43. void rectangl(int dc, int dl,int longer, int larg); /* rectangle */
  44. int lec_fich(FILE *p); /* lecture du fichier *.arb */
  45. void error_message(int fc,const char *ch);
  46. /*PROGRAMME PRINCIPALE */
  47. int main ()
  48. {
  49. char *nfich1;
  50. cadre();
  51. info("VEUILLEZ APPUYER SUR UNE TOUCHE SVP POUR ACCEDER A L'APLLICATION" );
  52. menu_haut2();
  53. menu_haut1();
  54. nfich1=acq_nfich("NOM DE FILE : ...............(arb)","rt" );
  55. // clrscr();
  56. return 0;
  57. }
  58. /*FONCTION*/
  59. void menu_haut1()
  60. {
  61. int i;
  62. char *nfich1;
  63. int tch,cle;
  64. effacefenetre(1,1,80,25,ATT_FONT_G + RED,ATT_TEXT_G);
  65. //window(1,25,80,25);
  66. textcolor(WHITE); textbackground(BLUE);
  67. clrscr();
  68. gotoxy(30,1);
  69. printf("* LOGIQUE *" );
  70. gotoxy(50+1,2+1);
  71. textcolor(BLACK);
  72. textbackground(WHITE);
  73. gotoxy(35+1,20+1);
  74. cprintf(" ESC-Quit F1-Aide\n" );
  75. //window(1,1,80,1);
  76. getch();
  77. nfich1=acq_nfich("NOM DE L'AdD : ..................(arb)","rt" );
  78. //getch();
  79. fenetre(1,2,80,24,ATT_TEXT_G,ATT_FONT_G);
  80. do{
  81. gotoxy(15,1);
  82. printf("INTRODUCTION DES DONNEES LOGIQUES D'UN AdD\n" );
  83. getch();
  84. tch=getch();
  85. switch(tch){
  86. case ESC: exit(0);
  87. case f1: ; printf("vous voulez d'aide\n" ); break;
  88. default: cle=0; break;}
  89. } while(cle==1);
  90. getch();
  91. }
  92. void menu_haut2()
  93. {
  94. int tch,cle;
  95. effacefenetre(1,2,80,23,ATT_FONT_G,ATT_TEXT_G);
  96. //window(1,25,80,25);
  97. textcolor(BLACK); textbackground(WHITE); clrscr();
  98. gotoxy(2,2);
  99. cprintf(" ESC-Quit F1-Aide" );
  100. // window(1,1,80,1);
  101. textcolor(BLACK); textbackground(WHITE); clrscr();
  102. gotoxy(35,1);
  103. cprintf("* KUMAMOTO *" );
  104. fenetre(1,2,80,20+3,ATT_TEXT_G,ATT_FONT_G+RED);
  105. do{
  106. gotoxy(10,10);
  107. printf(" RECHERCHE DES ENSEMBLES MINIMAUX D'UN SYSTEME NON COHERENT " );
  108. gotoxy(25,12);
  109. printf("PAR LA METHODE DESCENDANTE ." );
  110. tch=bioskey(0);
  111. switch(tch){
  112. case ESC: exit(0);
  113. case f1: cle=1;printf(" vous voulez d'aide\n" ); break;
  114. default: cle=0; break;}
  115. } while(cle==1);
  116. getch();
  117. effacefenetre(3,3,78,23,ATT_FONT_G,ATT_TEXT_G);
  118. gotoxy(7,0);
  119. }
  120. // Affiche dans un cadre
  121. void info(const char * txt)
  122. {
  123. int i;
  124. textcolor(WHITE);
  125. textbackground(GREEN);
  126. gotoxy(2,9); printf("%c",201); for( i=0; i<75; i++) printf("%c",205); printf("%c",187);
  127. gotoxy(2,10); printf("%c %s",186,txt); gotoxy(3+75,10); printf("%c",186);
  128. gotoxy(2,11); printf("%c",200); for( i=0; i<75; i++) printf("%c",205); printf("%c",188);
  129. }
  130. // Créer le cadre
  131. void cadre()
  132. {
  133. int i;
  134. textcolor(WHITE);
  135. textbackground(BLUE);
  136. printf("\n" );
  137. for( i=0; i < 70; i++) printf("%c",223);
  138. printf("\n" );
  139. for( i=0; i < 20; i++) printf("%c \t\t\t\t\t\t\t\t %c\n",223,223);
  140. for( i=0; i < 70; i++) printf("%c",223);
  141. }
  142. void construction_n_fich(char *n_fich,const char *type,int cle)
  143. {
  144. char FILENAME;
  145. int flag;
  146. char drive[2],file[MAXFILE],ext[MAXEXT],dir[MAXDIR];
  147. char s[MAXPATH];
  148. flag=fnsplit(n_fich,drive,dir,file,ext);
  149. if(flag&FILENAME)
  150. strcpy(ext,type);
  151. if(cle==1)
  152. fnmerge(n_fich,NULL,NULL,file,ext);
  153. else
  154. fnmerge(n_fich,drive,dir,file,ext);
  155. }
  156. void message(char *ch)
  157. {
  158. int tch;
  159. textcolor(ATT_FONT_MESS);
  160. textbackground(WHITE);
  161. gotoxy(7,0);
  162. clrscr();
  163. cprintf("%s",ch);
  164. tch=bioskey(0);
  165. switch(tch){
  166. case f1: printf("VOUS VOULEZ D'AIDE? CONTACTER SMAIL\n" );break;
  167. case ESC: exit_prg();
  168. default: clrscr(); break;}
  169. }
  170. void exit_prg()
  171. {
  172. effacefenetre(1,1,80,25,BLACK,BLACK);
  173. gotoxy(7,0);
  174. exit(0);
  175. }
  176. void effacefenetre(int dc,int dl,int fc,int fl,int att_font,int att_text)
  177. {
  178. textbackground(att_font);
  179. textcolor(att_text);
  180. clrscr();
  181. }
  182. void fenetre(int dc,int dl,int fc,int fl,int att_rect,int att_font)
  183. {
  184. textcolor(BLUE);
  185. textbackground(YELLOW);
  186. clrscr();
  187. rectangl(1,1,fc,fl);
  188. gotoxy(7,0);
  189. }
  190. void rectangl(int dc, int dl,int longer, int larg)
  191. {
  192. int i ;
  193. char c1='Í' ,c2='É',c3='¼',c4='»',c5='È',c6='º';
  194. for(i=0;i<longer-1;i++)
  195. { gotoxy(dc+i+1,dl);
  196. cprintf("Í" ); }
  197. for(i=0;i<longer-1;i++)
  198. { gotoxy(dc+i+1,larg+1);
  199. cprintf("Í" );}
  200. for(i=1;i<=larg-1;i++)
  201. { gotoxy(dc,dl+i);
  202. cprintf("º" );}
  203. for(i=1;i<=larg-1;i++)
  204. {
  205. gotoxy(longer,dl+i);
  206. cprintf("º" );}
  207. gotoxy(dc,dl); cprintf("É" );
  208. gotoxy(longer,dl); cprintf("»" );
  209. gotoxy(dc,larg+1); cprintf("È" );
  210. gotoxy(longer,larg+1); cprintf("¼" );
  211. }
  212. int lec_fich(FILE *p) // la fonction de lecture des données de mon file
  213. {
  214. unsigned int i,j,i1;
  215. int a;
  216. int NP,NE,NBE;
  217. char *chaine,*ch;
  218. int *E;
  219. fscanf(p,"%d",&NP);
  220. fscanf(p,"%d",&NE);
  221. fscanf(p,"%d",&NBE);
  222. if((p=malloc(NP*(NE+1)*sizeof(chaine)))==NULL)
  223. { error_message(62,"Mémoire insuffisante pour cet AdD. ESC" ); exit(0);
  224. }
  225. if((E=malloc(NP*sizeof(int)))==NULL)
  226. { error_message(62,"M‚moire insuffisante pour cet AdD. ESC" ); exit(0);}
  227. for(i=0;i<NP;i++)
  228. {
  229. fscanf(p,"%s",(p+0+i*(NE+1))->ch);
  230. a=strlen((p+0+i*(NE+1))->ch);
  231. if(strncmp((p+0+i*(NE+1))->ch,"g+",2)!=0
  232. && strncmp((p+0+i*(NE+1))->ch,"g*",2)!=0
  233. && strncmp((p+0+i*(NE+1))->ch,"n+",2)!=0
  234. && strncmp((p+0+i*(NE+1))->ch,"n*",2)!=0
  235. && strncmp((p+0+i*(NE+1))->ch,"gx",2)!=0
  236. ) return(0);
  237. else if(a<3) return(0);
  238. else { for(i1=2;i1<a;i1++)
  239. if((isdigit((p+0+i*(NE+1))->ch[i1]))==0) return(0);}
  240. a=extrait((p+0+i*(NE+1))->ch); if(a<0||a>NP-1) return(0);
  241. fscanf(p,"%u",(E+i));
  242. if(*(E+i)<0 ||*(E+i)> NE) return(0);
  243. for(j=1;j<=*(E+i);j++)
  244. { fscanf(p,"%s",(p+j+i*(NE+1))->ch);
  245. a=strlen((p+j+i*(NE+1))->ch);
  246. if(strncmp((p+j+i*(NE+1))->ch,"g+",2)!=0
  247. && strncmp((p+j+i*(NE+1))->ch,"g*",2)!=0
  248. && strncmp((p+j+i*(NE+1))->ch,"n+",2)!=0
  249. && strncmp((p+j+i*(NE+1))->ch,"n*",2)!=0
  250. && strncmp((p+j+i*(NE+1))->ch,"gx",2)!=0
  251. && strncmp((p+j+i*(NE+1))->ch,"e+",2)!=0
  252. && strncmp((p+j+i*(NE+1))->ch,"e-",2)!=0
  253. ) return(0);
  254. else if(a<3) return(0);
  255. else { for(i1=2;i1<a;i1++)
  256. if((isdigit((p+j+i*(NE+1))->ch[i1]))==0) return(0);}
  257. a=extrait((p+j+i*(NE+1))->ch);
  258. if(strncmp((p+j+i*(NE+1))->ch,"g+",2)==0
  259. || strncmp((p+j+i*(NE+1))->ch,"g*",2)==0
  260. || strncmp((p+j+i*(NE+1))->ch,"n*",2)==0
  261. || strncmp((p+j+i*(NE+1))->ch,"n+",2)==0
  262. || strncmp((p+j+i*(NE+1))->ch,"gx",2)==0)
  263. { if(a<0||a>NP-1) return(0); }
  264. else if(strncmp((p+j+i*(NE+1))->ch,"e+",2)==0
  265. || strncmp((p+j+i*(NE+1))->ch,"e-",2)==0 )
  266. { if(a<0||a>NBE) return(0); }}
  267. }
  268. fclose(p);
  269. return(1);
  270. }
  271. void error_message(int fc,const char *ch)
  272. {
  273. int dc=20,dl=10,fl=12;
  274. int cle=0,tch;
  275. fenetre(dc,dl,fc,fl,ATT_TEXT_MESS,ATT_FONT_MESS);
  276. gotoxy(2,1);
  277. cprintf("%s",ch);
  278. do{
  279. tch=bioskey(0);
  280. switch(tch){
  281. case ESC
  282. : clrscr(); cle=1; break;
  283. defaulte: cle=0;break;
  284. }} while(cle==0);
  285. effacefenetre(dc,dl,fc,fl,ATT_FONT_G,ATT_TEXT_G);
  286. }
  287. int extrait(char *ptr)
  288. {
  289. int n1;
  290. n1=atoi(ptr+2);
  291. return(n1);
  292. }
  293. void gprintf(int *p,int lig ,int col)
  294. {
  295. int i,j;
  296. printf("\n" );//vide;
  297. for(i=0;i<lig;i++)
  298. { for(j=0;j<col;j++)
  299. printf("% d",*(p+j+i*col));
  300. printf("\n" );}
  301. }
  302. char *acq_nfich(const char *ch,const char *mode)
  303. {
  304. char *nfich;
  305. FILE *fp;
  306. int NBE,NE,NP,dc1=15,dl1=10,fc1=65,fl1=12;
  307. do{
  308. fenetre(dc1,dl1,fc1,fl1,BLUE,WHITE);
  309. gotoxy(dc1+2,dl1+1);
  310. cprintf("%s",ch);
  311. // nfich=ascanf(MAXPATH,dc1+strlen(ch)-12,dl1+1,fc1-2,fl1-1);
  312. // construction_n_fich(nfich,".arb",0);
  313. if((fp=fopen(nfich,mode))==NULL)
  314. {
  315. free(nfich);
  316. message("Erreur d'ouverture !" );}
  317. }while(fp==NULL);
  318. effacefenetre(dc1,dl1,fc1,fl1,BLUE,WHITE);
  319. if(!(lec_fich(fp))||NP==0||NBE==0||NE==0)
  320. {
  321. error_message(50,"Erreur de format. ESC" ); exit(0);}
  322. return(nfich);
  323. }

Reply

Marsh Posté le 08-12-2010 à 10:32:27    

L'indentation est pire avec la balise que sans la balise !
Ce n'est pas facile à lire pour cette raison, et pour une autre raison qui est la mauvaise structuration du programme.
Avant décrire un programme, cela aide d'écrire un résumé du programme en pseudo-code. Mais là, ce travail préliminaire ne semble pas avoir été fait, parce que c'est un fouillis indigne d'un programme.
Par exemple, il faut fermer un fichier dans la même fonction que celle qui ouvre le fichier, et donc écrire quelque chose comme :

fopen...
for(i = 0; i < limit_maxi; i++) {
  fread... ou fgets
  if eof...
     break
  if (process_data... == false)
     break;
}
fclose...


 

Citation :

char *acq_nfich(const char *ch,const char *mode)

Il vaut mieux ne pas passer le mode d'ouverture d'un fichier en paramètre. Si on fait cela, cela éloigne ce mode du fopen, et cela rend difficile la lecture du programme, quand on cherche à voir quel mode est utilisé pour ouvrir quel fichier.
Or ce mode d'ouverture est important car une erreur fréquente est de faire une ouverture en mode texte au lieu de la faire en mode binaire.
 

Citation :

fscanf(p,"%d",&NP);

Il vaut mieux ne pas utiliser fscanf, car on ne maîtrise ni le détail des erreurs éventuels, ni la longueur de ce qui est lu. Il est  préférable de lire toute une ligne dans un buffer avec fgets si c'est du texte et de découper ensuite le contenu du buffer, ou bien de lire un bloc avec fread.
 
Désolé pour ces remarques, mais elles vous permettront sans doute de progresser.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed