bonjour,
Mon probleme est que je n'arrive pas a compter les caracteres qui sont identique dans le tableu, dans la procedure decoder_cles2. Le programme compte des caracteres qui n' ont pas été rentré dans le tableau !
voici le programme :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
#include <stdio.h>
#include <stdlib.h>
#define NBMAX 80
 
void acquerir_texte(char *suite, int *nb_car);
void acquerir_cle(int *cle);
char coder_lettre (int cle, char car);
void coder_texte (char *suite, int nb_car,int cle,char *code);
void decoder_texte (char *suite, int nb_car,int cle,char *decode);
void decoder_cle (int *deccle,char *suite,char *code);
void decoder_cle2 (int *deccle,char *suite,char *code);
 
 
int main(int argc, char *argv[])
{
 	 char suite_car[NBMAX];
 	 char suite_code[NBMAX],suite_decode[NBMAX];
	 int nombre_car,serial,i,decserial;
 
	 acquerir_texte(suite_car,&nombre_car); 
 
	 for(i=0;i<nombre_car;i++)                         
   	 {
   		printf("%c",suite_car[i]);
     }  
 
	 acquerir_cle(&serial);
	 coder_texte(suite_car,nombre_car,serial,suite_code);
	 printf("\n");
     printf("Texte code :\n");
	 for(i=0;i<nombre_car;i++)                         
   	 {
   		printf("%c",suite_code[i]);
     }  
     printf("\n");  
	 decoder_texte(suite_code,nombre_car,serial,suite_decode);
	 printf("\n");
	 printf("Texte decode :\n");
	for(i=0;i<nombre_car;i++)                         
   	{
   		printf("%c",suite_decode[i]);
     }  
  printf("\n");
    decoder_cle (&decserial,suite_code,suite_car);
    decoder_cle2 (&decserial,suite_code,suite_car);
 
  system("PAUSE");	
  return 0;
}
 
void acquerir_texte(char *suite, int *nb_car)
{
     int i;
     char c;
     *nb_car=0;                                  
     printf("Entrez votre phrase a coder (Termine par un '.'):\n");
     do
     {
                    c=getche();
                    if (c!= '.')
                    {
                                suite[*nb_car]=c;   
                                *nb_car = (*nb_car)+1;
                    }
     }while (c!='.' && (*nb_car)<NBMAX);                 
 
   printf("\n");                                
   }
 
void acquerir_cle(int *cle)
{
	printf("\nTapez une cle de cryptage: elle doit etre compris entre 0 et 25\n");
	do
	{
		scanf("%d",cle);
		if((*cle<0) || (*cle>25))
		printf("Erreur! Veuillez recommencer !!!\n");
	}while ((*cle<0) || (*cle>25));
	printf("Cle de cryptage:%d\n",*cle);
}
 
char coder_lettre (int cle, char car)
{
	int i;
 
	if ((car>='a' && car<='z')||(car>='A' && car<='Z'))
	{
		for (i=0;i<cle;i++)
		{
			if((car=='z')||(car=='Z'))
				car=car-25; 
			else car++;	
		}
	}
	return (car);
}
 
void coder_texte (char *suite, int nb_car,int cle,char *code)
{
	int i;
	for(i=0;i<=nb_car;i++)
		code[i]= coder_lettre(cle,suite[i]);
}
 
void decoder_texte (char *suite, int nb_car,int cle,char *decode)
{
	int i;
	for(i=0;i<=nb_car;i++)
		decode[i]= coder_lettre((26-cle),suite[i]);
}
 
void decoder_cle (int *deccle,char *suite,char *code)
{
     *deccle = suite[0]-code[0];
 
     if(*deccle<0)
     *deccle = *deccle+26;
     printf("Cle trouve:%d\n",*deccle);
 
}
 
void decoder_cle2 (int *deccle,char *suite,char *code)
{
     int i;
     int lettrecompter[NBMAX];
     //Initialisation du tableau
     for(i=0;i<=NBMAX-1;i++)                           
     lettrecompter[i]=0;    
 
     for(i=0;i<=78;i++)
     {
                          if ((suite[i]>='a') && (suite[i]<='z'))
                              lettrecompter[suite[i] - 'a']++;
                          else 
                          {
                               if(suite[i]>='A' && suite[i]<='Z')
                               lettrecompter[suite[i] - 'A']++;
                          }
     }
     for(i=0;i<=25;i++)           
     printf("\n%c:%d",'a'+i,lettrecompter[i]);
 
 
     printf("\n");
 
 
}
Merci d'avance pour vos reponse !