Programme en c

Résolu
haddadmarc Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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 389 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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