- Totu,
Bonjour, Je suis face à un TP où l’on doit créer des algorithmes de codage à partir des TDs que l’on a déjà fait. Nous avons plutot bien avancé dans le cours mais j’ai toujours du mal avec la programmation.
**TP**
1- Algorithme de codage 1 :
MoT!D#P@SSe? -----codage---> RtY&I(UEXXjD
2- Algorithme de codage 2 :
MoT!D#P@SSe? -----codage---> 77111843268328032838310132
3- Algorithme de codage 3 :
MoT!D#P@SSe? -----codage----> MRotTY!&DI#(PU@ESXSXej?D
J’ai déjà fait le premier et le second en me basant sur nos TDs, mais sur le troisième codage je bloque complètement. Voici le codage 1 :
Codage 1
#include<stdio.h>
//Fonction de saisie d'un tableau de caractères
void saisir(char * T, int n){
int i;
char free;
for(i=0;i<n;i++){
free=getchar();
printf("Caractere %d : ", i+1);
scanf("%c", &T[i]);
}
}
char plusLoin(char c, int n){
return c+n;
}
char * Codage1(char * T, int n){
char * TRes = malloc((n+1) *sizeof(char));
int i, distance;
printf("Donner la distance : ");
scanf("%d", &distance);
for(i = 0; i<n ;i++){
TRes[i] = plusLoin(T[i], distance);
}
TRes[i] = '\0';
return TRes;
}
int main (int n) {
char * TCodage1[n];
saisir(TCodage1, n);
char * TResCodage1;
TResCodage1 = Codage1(TCodage1, n);
printf("Le codage 1 de la chaine %s donne : %s \n", TCodage1, TResCodage1);
}
Le codage 3 ressemble au codage 1 car il mélange le résultat de ce codage avec le mot de base. Il faudrait changer la boucle 'for' dans le 'char codage' je suppose. Voici ce que j’ai réalisé pour l’instant sur le codage 3 :
codage 3
#include<stdio.h>
char plusLoin(char c, int n){
return c+n;
}
void insererCaracPos(char * T, int n, char nouveau, int pos){
T = realloc(T, (n+1)*sizeof(char));
int i = n;
while((i>pos) && (i>=0)){
T[i]=T[i-1];
i--;
}
T[i] = nouveau;
}
//Fonction de saisie d'un tableau de caractères
void saisir(char * T, int n){
int i;
char free;
for(i=0;i<n;i++){
free=getchar();
printf("%c ", T[i]);
}
printf("\n");
}
char Codage3(char * T, int n){
char * TRes = malloc((n+1) *sizeof(char));
char carac, p, chaine[] = "Mot!de#passe?";
int i, distance, comptage, m=12;
printf("Donner la distance : ");
scanf("%d", &distance);
for(i = 0; i<n ;i++){
TRes[i] = plusLoin(T[i], distance);
}
TRes[i] = '\0';
for (comptage=0; comptage < n; comptage++){
carac = TRes[comptage];
printf("%c\n", TRes[comptage]);
insererCaracPos(T, m, p, comptage);
printf("%c\n",T[comptage]);
}
saisir(T,m);
}
int main (){
int i;
int n = 12;
char chaine[] = "Mot!de#passe?";
Codage3(chaine, n);
}
Si quelqu’un a des indications pour moi, ça serait vraiment génial. Merci d’avance !
Edit ache : Formatage des codes sources.
+0
-0