Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Maple dur dur

Posté par
zizounette
28-11-08 à 15:50

Voila, vu que le prof ne nous aide pas, j'espere que vous pourrez m'aider ici...

je vous énonce les énoncés des problemes:

exo 1
a)ecrire une procédure qui transforme une lettre en un nombre binaire avec la conversion suivante: blanc->0, a->1, b->10,c->11 etc..
b)ecrire une procédure"conversion(chaine)" qui prend en entrée une chaine de caracteres contenant des blancs et des lettres de a à z et qui retourne un nombre binaire par la concaténation des conversions de la question précédente.Par exemple: bcb->100001100010
c)ecrire une procedure "conversinInverse" telle que conversionInverse(conversion(x))=x pour toute chaine x

exo2
a)ecrire une procedure clePrivee(n) qui renvoie (p,q,r) où p,q sont 2 entiers premiers à n chiffres et r un entier à n chiffres premiers à (p-1)(q-1)
b)ecrire une procedure codageRSA(m,n,r) qui prend en entree une chaine m,2entiers n et r et qui renvoie l'encryption du message m par l'algorithme RSA(cad utiliser la fonction conversion et le passage à la puissance r dans Z/nZ)
c) ecrire une procedure decodageRSA(c,p,q,r) qui prend en entree un message crypté c,les facteurs p,q de la clé RSA, et l'exposant r ayant servi au codage et qui renvoie le message en clair(cad decodageRSA(codageRSA(m,pq,r),p,q,r)=m)
d) verifier sur quelques exemples que codage et decodage sont bien inverses l'un de l'autre


Voila, merci de me répondre, l'exam que je vais avoir porte essentiellement sur ces types de procedure, et vu que je vois pas du TOUT comment faire, ce serait sympa de m'aider...

Mélanie

édit Océane : forum modifié

Posté par
zizounette
Maple dur dur 28-11-08 à 15:52

Voila, vu que le prof ne nous aide pas, j'espere que vous pourrez m'aider ici...

je vous énonce les énoncés des problemes:

exo 1
a)ecrire une procédure qui transforme une lettre en un nombre binaire avec la conversion suivante: blanc->0, a->1, b->10,c->11 etc..
b)ecrire une procédure"conversion(chaine)" qui prend en entrée une chaine de caracteres contenant des blancs et des lettres de a à z et qui retourne un nombre binaire par la concaténation des conversions de la question précédente.Par exemple: bcb->100001100010
c)ecrire une procedure "conversinInverse" telle que conversionInverse(conversion(x))=x pour toute chaine x

exo2
a)ecrire une procedure clePrivee(n) qui renvoie (p,q,r) où p,q sont 2 entiers premiers à n chiffres et r un entier à n chiffres premiers à (p-1)(q-1)
b)ecrire une procedure codageRSA(m,n,r) qui prend en entree une chaine m,2entiers n et r et qui renvoie l'encryption du message m par l'algorithme RSA(cad utiliser la fonction conversion et le passage à la puissance r dans Z/nZ)
c) ecrire une procedure decodageRSA(c,p,q,r) qui prend en entree un message crypté c,les facteurs p,q de la clé RSA, et l'exposant r ayant servi au codage et qui renvoie le message en clair(cad decodageRSA(codageRSA(m,pq,r),p,q,r)=m)
d) verifier sur quelques exemples que codage et decodage sont bien inverses l'un de l'autre


Voila, merci de me répondre, l'exam que je vais avoir porte essentiellement sur ces types de procedure, et vu que je vois pas du TOUT comment faire, ce serait sympa de m'aider...

Mélanie

*** message déplacé ***

édit Océane : merci de ne pas poster ton exercice dans des topics différents, les rappels sont pourtant bien visibles.
En postant un petit message dans ton topic, il remonte automatiquement parmi les premiers.

Posté par
tringlarido
re : Maple dur dur 28-11-08 à 22:30

Salut,

Le problème est curieux à plusieurs points de vue. Je conçois relativement bien qu'on puisse envisager des conversions :
  "chaine de caractères" <--> "liste d'entier"
Mais je ne vois pas ce que vient faire ici la notion "d'entier binaire". Le binaire est simplement un format pour écrire les entiers. Il n'y a pas de "variable binaire" dans maple (ce qui ne veut d'ailleurs rien dire). L'écriture binaire est un format d'écriture ...

Posté par
tringlarido
re : Maple dur dur 28-11-08 à 22:32

Mais si c'est indispensable il y a toujours la commande convert de maple qui s'utilise ici de la manière suivante :
  convert(n,binary)
et renvoie l'entier n sous forme binaire

Posté par
tringlarido
re : Maple dur dur 28-11-08 à 22:32

De manière générale, l'aide de maple est toujours précieuse.

Posté par
tringlarido
re : Maple dur dur 28-11-08 à 22:41

Pour le premier exercice (j'ai utilisé une terminologie anglophone...préférable en programmation car sans accent...) :

with(StringTools):
# bibliotheque utile pour les fonctions Ord(c) et Char(n) qui permettent de passer d'un entier à un caractère


char_to_integer := proc(c) description "conversion of a character into a binary integer":
  if c = " " then return 0:
  else return convert((Ord(c) - 96),binary): fi:
end proc:

integer_to_char := proc(n) description "conversion of a binary integer to a character":
  if n = 0 then return " ":
  else return Char(convert(n,decimal,binary)+96): fi:
end proc:

str_to_list := proc(x) description "conversion from a string to a list":
  local i,l:
  l := [];
  for i in x do
    l := [op(l),char_to_integer(i)]:
  od:
return l:
end proc:

list_to_str := proc(l) description "conversion from a list to a string":
  local i,x:
  x := "":
  for i in l do
    x := cat(x,integer_to_char(i)):
  od:
return x:
end proc:

Posté par
zizounette
re : Maple dur dur 29-11-08 à 09:11

merci mais quand je tape ca dans maple, ca fonctionne pas... :/

Posté par
tringlarido
re : Maple dur dur 29-11-08 à 09:44

Tu as quelle version de maple ?
Tu tapes quoi exactement ?

Posté par
zizounette
re : Maple dur dur 29-11-08 à 10:39

j'ai mapleV release4

je tape ca:

char_to_integer := proc(c)
  if c = " " then return(0)
  else return(convert((Ord(c) - 96),binary)) fi;
end

integer_to_char := proc(n)
  if n = 0 then return(" ")
  else return(Char(convert(n,decimal,binary)+96)) fi;
end

str_to_list := proc(x)
  local i,l;
  l := [];
  for i in x do
    l := [op(l),char_to_integer(i)];
  od;
return(l);
end

list_to_str := proc(l)
  local i,x;
  x := "";
  for i in l do
    x := cat(x,integer_to_char(i));
  od;
return(x);
end

Posté par
tringlarido
re : Maple dur dur 29-11-08 à 13:10

(J'ai maple 12 il y a peut-être un problème de compatibilité)

En tout cas, il faut d'abord charger le module StringTools avant d'essayer quoi que ce soit. C'est-à-dire qu'il faut exécuter :
with(StringTools):


Quelles sont les erreurs que sort maple ?



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !