Bonsoir à tous les membres de ce forum.
Je suis un étudiant en 1ère année de Programmation. Je dois exécuter un TP dont la teneur est :
Jusqu'à maintenant, je n'ai réussi qu'à écrire deux (2) programmes (au lieu d'un programme contenant deux (2) procédures, du fait que je n'arrive pas à une conciliation) distincts pour le cryptage et le décryptage.Faites un programme basé sur le chiffre de César. Chaque lettre est remplacée par celle qui vient n rangs (n>=2) après elle. Pour les chiffres, il faut adopter le même principe. Les signes de ponctuation restent inchangés et les caractères blancs (espaces) sont remplacés par l'étoile. Un menu doit permettre de saisir le texte du message, d'afficher le message à l'écran, de l'enregistrer dans un fichier, de le crypter, d'afficher le résultat du cryptage, d'enregistrer le message dans un fichier de sortie, de lire un message crypté contenu dans un fichier, de pouvoir le décrypter, d'afficher le message (originel) décrypté, de pouvoir l'enregistrer dans un fichier de sortie.
Recommandations :
Chaque méthode sera écrite sous la forme d'une procédure dont les paramètres minimaux sont un fichier texte en entrée et un fichier texte en sortie.
J'ai réussi à crypter uniquement l'alphabet (sans espace ni chiffre) avec.
Code : Sélectionner tout - Visualiser dans une fenêtre à part z:=(((ord(saisie[i])-97+decallage)mod 26)+97)
Je sais qu'il faut faire une sorte de table dans laquelle il faut regrouper les chiffres et les lettres de l'alphabet. Si le caractère saisi fait partie de l'alphabet, il faut appliquer la formule précédente sinonDès qu'un espace est rencontré, il doit être replacé par une étoile (j'ai écrit cette instruction mais l'espace est automatiquement chiffré en fonction du décalage). J'espère avoir été exhaustif dans l'exposé de mon problème. Merci d'avance à tous ceux qui essayeront de m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine_sortie:=chaine_entrée
.
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 Program cryptage; uses crt; type alphanum=record bet:'a'..'z'; num:'0'..'9'; end; var msg,result,saisie:string;var F,crypt:Text;var sai,ais:alphanum; var i,j,z,decallage:integer;var clair:boolean; begin clrscr; Assign(F,'C:\TP\clair.txt'); Rewrite(F); write('Entrez le message crypter:'); readln(saisie); writeln('Le message crypter est:',saisie,'.'); write(F,saisie); Assign(crypt,'C:\TP\crypt.txt'); rewrite(crypt); begin write('Choisissez un dcalage compris entre 2 et 36:'); read(decallage);if decallage=1 then writeln ('Veuillez repter l''opration en respectant le dcalage prvu.'); if decallage=1 then repeat read(decallage) until decallage>=2;end; for i:=1 to length(saisie) do begin if (saisie[i]=sai.bet) and (saisie[i]=sai.num) then z:=((ord(saisie[i])+decallage)mod 36) else msg:=saisie[i];msg:=msg+chr(z); if ord(saisie[i])=32 then msg:=msg+'*';result:=result+msg;end; Writeln(crypt,result);readln; begin writeln('Avec un dcallage de ',decallage,' rangs,','votre message devient:',result,'.');readln; close(crypt); close(F);end; End.
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 Program decryptage; uses crt; var result,res,res1:string;var crypt,decrypt:Text; var g,tail,dec,decallage,y:integer; begin clrscr; Assign(crypt,'C:\crypt.txt'); reset(crypt); while not eof(crypt) do readln(crypt,result); writeln('Le message crypt est:',result,'.'); Assign(decrypt,'C:\TP\decrypt.txt'); rewrite(decrypt); write('Entrez le dcalage utilis pour le cryptage de ce message:'); read(dec); tail:=length(result); for g:=1 to tail do begin y:=(((ord(result[g])-97-dec)mod 26)+97);res:=res+chr(y); if ord(result[g])=42 then res:=res+'';end;res1:=res1+res; readln; Writeln(decrypt,res1); begin writeln('Le message (originel) dcrypt est:',res1,'.');readln; close(decrypt); close(crypt); end; End.
Partager