Salut, je me suis remis à la programmation en C depuis peu et j'ai ressortis un ptit programme que j'avais codé à mes heures perdues, seulement, en le recompilant et en le testant il ne marche pas, il m'affiche les ?????? de mon else dans la boucle for.....

Pourriez-vous m'aider à le faire fonctionner et peut-être m'indiquer comment l'améliorer un petit peu.........

Voici le codeur morse :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
#include <stdio.h>
#include <string.h>
#define NL 37                                
 
main()
{
 
   struct code { char lettre ;
                 char * morse ;
               } ;
   struct code table[NL] =                          
 
               { 'A', ".-",       'B', "-...",       'C', "-.-.",
                 'D', "-..",      'E', ".",          'F', "..-.",
                 'G', "--.",      'H', "....",       'I', "..",
                 'J', ".---",     'K', "-.-",        'L', ".-..",
                 'M', "--",       'N', "-.",         'O', "---",
                 'P', ".--.",     'Q', "--.-",       'R', ".-.",
                 'S', "...",      'T', "-",          'U', "..-",
                 'V', "...-",     'W', ".--",        'X', "-..-",
                 'Y', "-.--",     'Z', "--..",
                 '.', ".-.-.-",
                 '0', "-----",    '1', ".----",      '2', "..---",
                 '3', "...--",    '4', "....-",      '5', ".....",
                 '6', "-....",    '7', "--...",      '8', "---..",
                 '9', "----.",
               } ;
 
   char ligne[128] ;                              
   int i, j ;
 
   debut:          
 
   printf ("\n\n         LES CARACTERES SONT A ECRIRE EN MAJUSCULE    \n\n") ;
   printf ("                      128 caracteres maximum  \n") ;
   printf ("                   Introduisez une phrase : \n") ;
 
   gets (ligne) ;
 
   printf ("\n\n           Voici la traduction de votre message : \n\n") ;
 
   for (i=0 ; i<strlen(ligne) ; i++) 
 
      { j=0 ;
        while (ligne[i] != table[j].lettre && j++<NL-1) ;
        if (j<NL) printf ("%7s", table[j].morse) ;
            else  printf (" ??????") ;
        if ( ! ((i+1)%10) ) printf ("\n\n") ; 
 
      }
      goto debut ; 
}
Et voici le décodeur morse que je n'arrive pas à compiler avec code::blocks, ça marchais avec devc++ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
#include <stdio.h>
#include <string.h>
#define NL 37                                 
#define LG 127                                  
 
main()
{
   struct code { char lettre ;
                 char * morse ;
               } ;
   struct code table[NL] =                 
 
               { 'A', ".-",       'B', "-...",       'C', "-.-.",
                 'D', "-..",      'E', ".",          'F', "..-.",
                 'G', "--.",      'H', "....",       'I', "..",
                 'J', ".---",     'K', "-.-",        'L', ".-..",
                 'M', "--",       'N', "-.",         'O', "---",
                 'P', ".--.",     'Q', "--.-",       'R', ".-.",
                 'S', "...",      'T', "-",          'U', "..-",
                 'V', "...-",     'W', ".--",        'X', "-..-",
                 'Y', "-.--",     'Z', "--..",
                 '.', ".-.-.-",
                 '0', "-----",    '1', ".----",      '2', "..---",
                 '3', "...--",    '4', "....-",      '5', ".....",
                 '6', "-....",    '7', "--...",      '8', "---..",
                 '9', "----.",
               } ;
   char ligne[LG+1] ;                       
   char code[7] ;                   
   int i, j ;
 
   debut:                            
 
   printf ("\n\n        Introduiser un code morse a traduire : \n") ;
   gets (ligne) ;
   printf ("\n\n   Le code morse traduit alphabetiquement veut dire : \n") ;
 
 
   i=0 ;
   while (i<strlen(ligne))
      {
        while (ligne[i] == ' ') i++ ;    
        if ( i<strlen(ligne) )          
          { sscanf (&ligne[i], "%6s", code) ;
            i += strlen(code) ;            
            j=0 ;                            
            while ( stricmp (code, table[j].morse) && j++<NL-1) ;
            if (j<NL) printf ("%2c", table[j].lettre) ;   
                else  printf (" ?") ;           
          }
      }
      goto debut ;                
}
Bon évidemment, un bon codeur doit savoir coder sans son code.....mais, toutefois si un coup de pouce est possible...heu...bin, je dis pas non....