Programme en c

Résolu
haddadmarc Messages postés 66 Statut Membre -  
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
j'ai un petit probleme avec un programme en c.
ce programme utilise le chiffrement de cesar (decalage par substitution de 3 lettres)
je suis debutant en c mais je sais que je dois passer par une boucle (for) mais le probleme c'est que je n'y arrive pas
aidez moi s'il vous plait
merci

2 réponses

Wardog Messages postés 398 Statut Membre 159
 
Bonsoir,

C'est très simple, tu parcours ta chaine jusqu'à la fin \0 en copiant chaque caractère dans une chaine mallocé en decalant le caractere de 3.

En gros sa donne,

char *str;
char *cesar;
char *temp;

str = "bonjour sa va";
cesar = malloc((strlen(str) + 1) * sizeof(*cesar));
temp = cesar;

while (*str != '\0')
{
*cesar = *str + 3;
cesar++;
str++;
}

*cesar = '\0';

printf("%s\n", str);
printf("%s\n", temp);
free(cesar);

Il faudra bien sûr gérer les cas spéciaux du genre X Y et Z pour qu'il reviennent sur A B et C.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Le cas particulier est traité facilement par le modulo.
Par exemple :
#include <stdio.h>
#include <string.h>

#define DEC 3

int main(void){
    char mot[]="bonjour ca va";
    char *str=mot;

    for(int i=0;i<strlen(mot);i++){
        *str = (*str -'a' + DEC)% 26 + 'a';
        str++;
    }

    puts(mot);

    return 0;
}

Cdlt
0