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 66 67 68 69 70 71 72 73 74 75
| (load "F:\\chaines.ss")
; Exercice 1
; Programme cryptage décalage de l'alphabet
; Auteur: M.Dupassieux, Avril 2013
(define ( decalDroite ch x)
; revoie une chaîne de caratère renvoyée à droite par l'application d'un entier x sur une chaîne de caractère ch
; chaîne de caratère, entier >= 0 -> chaîne de caratère
(if (= x 0)ch ; si x est nul decalDroite renvoie ch
(decalDroite(carChaine(dernier ch)(debut ch))(- x 1))))
(define(carDeMemeRang c ch1 ch2)
; recherche un caractère c dans une chaine de caractère ch1 qui va renvoyer l'équivalent de c dans ch2
; caractère, 2 chaînes de caractères de même longueur -> caractère
(if(equal? ch1 "")c
(if(equal? c (premier ch1))(premier ch2)
(carDeMemeRang c (fin ch1)(fin ch2)))))
; Exercice 2
(define(appartient? c ch)
; revoie vrai si et seulement si le caractère c appartient à la chaîne de caractère ch
; caractère, chaîne de caractère -> booléen
(if(char-ci=? c(premier ch)) #t ; revoie vrai si le premier caractère appartient à ch
(appartient? c(fin ch)))) ; regarde si dans la fin de ch si c est présent
(define(supprDoublons Double)
; revoie une chaîne de caractère sans lettre multiples depuis une chaîne de caractère ch
; chaîne de caractère -> chaîne de caractère
(cond ((string=? Double "")"")
((appartient?(string-ref Double(-(string-length Double)1))(debut Double)))
((supprDoublons(debut Double)))
(else(chaineCar(supprDoublons(debut Double))(string-ref Double(-(string-length Double)1)))))
(define(groupeEnTete ch1 ch2)
; renvoie une chaîne de caractère sans doublons construite par deux chaînes de caractères ch1 et ch2
; 2 chaines de caractères -> chaine de caractères
;Exercice 3
(display "Bonjour veuillez tapper le texte que vous voulez crypter et terminer par $")
(define(lireTexte)
; renvoie un texte saisie au clavier avec espace et majuscule
; -> chaine
(symbol-> string(read-char)))
(display "Quelle clé de cryptage ou décryptage souhaité vous choisir ?")
(define(alphaTrans Clé Ch)
; renvoie l'alphabet transformé à partir d'un choix entre 3 clés Clé ('décalage, 'permutation et 'combiné) et d'une chaine de caractère Ch
; symbole, chaine de caractère -> chaine de caractère
(display "Quel est le texte à traduire ? Quel est l'alphabet source à utiliser ? Quel est l'alphabet cible ?")
(define(traduit Text As Ac)
; renvoie le texte Text traduit par les deux chaines As et Ac
; 3 chaines de caractères -> chaine de caractère
(display "Voulez vous crypter ou décrypter votre texte ?")
(define(crypte text1 cle1)
; renvoie un texte crypté depuis un texte text1 et une clé cle1
; 2 chaines de caractères -> chaine de caractère
(define(decrypte text2 cle2)
; renvoie un texte décrypté depuis un text2 et une clé cle2
; 2 chaînes de caractères -> chaines de caractère |
Partager