#1 Le 26/05/2013, à 21:10
- Kail
langage C : Programme qui code une phrase exemple a devient b, b -> c
Bonjour,
j'ai créer un programme qui va permettre de traduire des textes pour qu'il ne soit pas compréhensible par d'autres.
Exemple = " bonjour" va devenir " cpokpvs"
Pourquoi ?Car mon programme fait en sorte d'avancer d'une lettre, c'est à dire a devient b, b devient c etc. Donc Bonjour devient cpokpvs !
Problème : J'ai codé des lignes pour rien, j'aimerai raccourcir mon programme, par exemple j'aimerai qu'au lieu d'avancer d'une lettre, mon code l'avance de deux , ce qui donnerait pour a -> c ou pour b -> d !
Voici le code
#include <stdio.h>
#include <string.h>
char tab[100]= "abcdefghijklmnopqrstuvwxyz bonjour ";
int getstring (char tab[100]){
int ii=0;
char a='a';
char b='b';
char c='c';
char d='d';
char e='e';
char f='f';
char g='g';
char h='h';
char i='i';
char j='j';
char k='k';
char l='l';
char m='m';
char n='n';
char o='o';
char p='p';
char q='q';
char r='r';
char s='s';
char t='t';
char u='u';
char v='v';
char w='w';
char x='x';
char y='y';
char z='z';
for(ii=0;ii<50;ii++){
if ( tab[ii] == 'a') {tab[ii]='b';}
else if ( tab[ii] == 'b') {tab[ii]='c';}
else if ( tab[ii] == 'c') {tab[ii]='d';}
else if ( tab[ii] == 'd') {tab[ii]='e';}
else if ( tab[ii] == 'e') {tab[ii]='f';}
else if ( tab[ii] == 'f') {tab[ii]='g';}
else if ( tab[ii] == 'g') {tab[ii]='h';}
else if ( tab[ii] == 'h') {tab[ii]='i';}
else if ( tab[ii] == 'i') {tab[ii]='j';}
else if ( tab[ii] == 'j') {tab[ii]='k';}
else if ( tab[ii] == 'k') {tab[ii]='l';}
else if ( tab[ii] == 'l') {tab[ii]='m';}
else if ( tab[ii] == 'm') {tab[ii]='n';}
else if ( tab[ii] == 'n') {tab[ii]='o';}
else if ( tab[ii] == 'o') {tab[ii]='p';}
else if ( tab[ii] == 'p') {tab[ii]='q';}
else if ( tab[ii] == 'q') {tab[ii]='r';}
else if ( tab[ii] == 'r') {tab[ii]='s';}
else if ( tab[ii] == 's') {tab[ii]='t';}
else if ( tab[ii] == 't') {tab[ii]='u';}
else if ( tab[ii] == 'u') {tab[ii]='v';}
else if ( tab[ii] == 'v') {tab[ii]='w';}
else if ( tab[ii] == 'w') {tab[ii]='x';}
else if ( tab[ii] == 'x') {tab[ii]='y';}
else if ( tab[ii] == 'y') {tab[ii]='z';}
else if ( tab[ii] == 'z') {tab[ii]='a';}
}
printf(" %s \n",tab);
}
main(){
getstring(tab);
}
Hors ligne
#2 Le 26/05/2013, à 21:32
- telliam
Re : langage C : Programme qui code une phrase exemple a devient b, b -> c
Un caractère est encodé par une valeur numérique donc il te suffit de faire c = c + 2 pour decaler ton caractère de 2 lettres ( en gérant le cas particulier du 'z')
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#3 Le 26/05/2013, à 21:44
- Kail
Re : langage C : Programme qui code une phrase exemple a devient b, b -> c
J'ai trouvé comment faire
#include <stdio.h>
char tab[100] = "abcdez";
int trad(char tab[100]){
int i;
for(i=0;tabI!=0;i++){
tab[i +=2;
}
printf(" %s \n",tab);
}
main(){
trad(tab);
}
ça tenait en une quinzaine de lignes ! mais maintenant trouver pour le z
Hors ligne
#4 Le 26/05/2013, à 22:11
- Braun
Re : langage C : Programme qui code une phrase exemple a devient b, b -> c
Bonsoir,
1/ Comment gères tu la casse?
2/ Pour un ensemble de vingt six lettres, j'utiliserais un indice défini modulo vingt six (tampon circulaire) ce qui supprime totalement le problème pour "Z".
P.S. Nostalgie, à propos de Z, j'avais à mes débuts commis un traducteur en zorglangue.
Hors ligne
#5 Le 27/05/2013, à 17:47
- kuri
Re : langage C : Programme qui code une phrase exemple a devient b, b -> c
Il n y a pas que les majuscules qui peuvent poser probleme :
- Les chiffres
- les caracteres ! : . , ; ...
- les accents (ISO15, UTF-8 ...)
Selon ce qu on veux coder, le programme se complexifie tres vite.
Concernant les majuscules, on peux considerer de tout passer en minuscule automatiquement.
Hors ligne