IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages fonctionnels Discussion :

Dr Scheme problème


Sujet :

Langages fonctionnels

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Dr Scheme problème
    Voilà j'ai un DM en informatique à rendre, même si la date limite est passé il me reste deux ou trois jours pour le rendre, bien évidemment cela me vaudra des points malus.
    Nous devons rendre un DM avec Dr Scheme, je n'ai pas compris grand chose à ce logiciel de programmation et je suis perdue pour ce dm alors je vous demande votre aide vous génies de l'informatique.
    Merci d'avance

    Pour ce DM, je dois utiliser des fonctions prédéfinies qui sont celles-ci:

    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
    (define (lireChaine)
      ; renvoie un mot saisi au clavier sans " et sans espace
      ; -> chaine
      (symbol->string(read)))
    
    
    (define (premier chaine)
      ; renvoie le premier caractère d'une chaine saisie au clavier
      ; chaine non vide -> char
      (string-ref chaine 0 ))
    
    (define ( dernier ch)
      ; renvoie le dernier caractere d'une chaine 
      ; chaine non vide -> char
      (string-ref ch (-(string-length ch)1)))
    
    (define (debut ch )
      ; renvoie la chaine de caractere sans le dernier caractere
      ; chaine non vide -> string
      ( substring ch 0 (- (string-length ch)1 )))
    
    (define ( fin ch )
      ; renvoie une chaine sans son premier caractere
      ; chaine non vide -> string  
      (substring ch 1))
    
    (define (carChaine c ch)
      ; renvoie la chaine avec un caractère suplémentaire devant
      ; string, caractere -> string non vide
      (string-append (string c) ch))
    
    (define (chaineCar ch c)
      ; renvoie la chaine avec un caractère suplémentaire à la fin
      ; string, caractere -> string non vide
      (string-append ch (string c)))

    et voici ce que j'ai fait :

    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
    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
    Images attachées Images attachées

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/02/2013, 03h45
  2. Problème avec le changement de scheme - plugin Eclipse
    Par mina86 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 28/09/2009, 16h26
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo