Partage

[Exercices] Venez vous entraîner !

Ce mois: Parseur de fonctions mathématiques

24 novembre 2008 à 21:00:44

Pour les accents, je suppose qu'on doit quand même vérifier si l'utilisateur n'en rentre pas et si c'est le cas convertir en lettre sans accent (ou tout simplement renvoyer une erreur) ?
24 novembre 2008 à 21:04:55

A choix. Ce n'est pas réelement la partie importante de l'algorithme. A mon sens, le mieux pour être "user-friendly" serait de convertir en caractères normaux et d'afficher un message pour avertir l'utilisateur qu'une converion a eut lieu.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
25 novembre 2008 à 16:42:29

Bonjour Nanoc !
Bonjour à tous !

J'ai découvert ce forum il y a peu de temps, mais je suis déjà complètement accroc.
Je viens de soumettre ma solution à l'exercice de crypto et j'attends avec impatience les prochains exercices.
En attendant, je vais me lancer dans les autres exercices déjà corrigés.
Je trouve que les sujets sont très ludiques, traités en profondeur, de manière très professionnelle.
Ca doit te prendre un temps fou de trouver les sujets et de faire les corrections !
Je rajouterais que l'ambiance sur le forum est excellente !

Félicitations et bonne continuation !

Lucky92. :D:D:D
Anonyme
25 novembre 2008 à 18:50:12

Citation : Nanoc

A mon sens, le mieux pour être "user-friendly" serait de convertir en caractères normaux et d'afficher un message pour avertir l'utilisateur qu'une converion à eut lieu.


En fait c'est ce que je voulais dire, je me suis peut être mal exprimé ^^ .
Ma solution devrais arriver d'ici quelques jours le temp de finaliser mon algo de décryptage. :)
25 novembre 2008 à 23:41:52

Citation : Lucky92

Bonjour Nanoc !
Bonjour à tous !

J'ai découvert ce forum il y a peu de temps, mais je suis déjà complètement accroc.
Je viens de soumettre ma solution à l'exercice de crypto et j'attends avec impatience les prochains exercices.
En attendant, je vais me lancer dans les autres exercices déjà corrigés.
Je trouve que les sujets sont très ludiques, traités en profondeur, de manière très professionnelle.



Merci et bienvenue.

Citation : Lucky92

Ca doit te prendre un temps fou de trouver les sujets et de faire les corrections !



En effet :) Mais j'aime bien aider les gens à apprendre ce que je sais. Par contre tout ça diminue le temps disponible pour mon tuto. (Surtout avec le début de cette série de crypto, qui est un sujet qui m'intéresse également beaucoup)

Citation : Lucky92


Je rajouterais que l'ambiance sur le forum est excellente !



Je trouve aussi. C'est grâce à tous les membres qui y viennent jour après jour.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
27 novembre 2008 à 3:22:41

Cela fait un moment que je n'ai pas touché au C++, mais je vais m'y remettre sans tarder, pour au moins faire la première partie qui semble être à ma porté ^^.
Très sympa ces petits exercices en tout cas.
28 novembre 2008 à 12:55:13

Citation : Skydreamer

Pour la cryptanalyse, on peut considérer que les 3 lettres les plus utilisées sont le e, le a et le i et ensuite les déterminer en utilisant le décalage entre les 3 caractères obtenus ?


Est ce que par hasard, le caractère qui a le plus d'occurrence dans un texte ne serait pas l'espace?
28 novembre 2008 à 16:28:05

Dans l'absolu tu as raison. Mais habituellement on ne crypte pas les espaces.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
28 novembre 2008 à 21:35:11

Merci Nanoc pour se sympathique exo sur le cryptage (et qui sais peut être sur le tri plus tard :) ).
Donc, voila juste une petite question : que doit-on utiliser pour stocker la chaine car si on utilise les string sa s'arrête bien sur a l 'espace (l'erreur récurrente ^^ )
si besoin je crée un topic bien sur
merci

EDIT : bien sur en utilisant un char cela fait de meme :)
EDIT2 : j'ai trouvé en faisant string s = "site du zero";
voila ^^
28 novembre 2008 à 22:53:33

"ue doit-on utiliser pour stocker la chaine car si on utilise les string sa s'arrête bien sur a l 'espace (l'erreur récurrente)"
c'est la faute (?) a la foncton de lecture de l'entrée de l'utilisauter(scanf en loccurence), pas celle des string(un string peut contenir des espaces)
28 novembre 2008 à 23:11:09

Citation : Bachir ElMagnifico

"ue doit-on utiliser pour stocker la chaine car si on utilise les string sa s'arrête bien sur a l 'espace (l'erreur récurrente)"
c'est la faute (?) a la foncton de lecture de l'entrée de l'utilisauter(scanf en loccurence), pas celle des string(un string peut contenir des espaces)



ok merci
mais justement j'en parle dans mon nouveau topic ;)
si tu peux y jeter un coup d'oeil...
30 novembre 2008 à 3:44:03

Une petite question, pour le niveau deux, on considère bien que l'on est en présence d'un texte codé à l'aide du chiffre de César?
30 novembre 2008 à 10:05:27

Oui, parfaitement ;) !
Ps: je viens de finir, j'envoi bientôt le code :p .
30 novembre 2008 à 10:39:34

J'avais fait un petit programme comme ca, mais en C, je peux l'envoyer quand même ?
30 novembre 2008 à 11:11:36

Citation : Zizi

Une petite question, pour le niveau deux, on considère bien que l'on est en présence d'un texte codé à l'aide du chiffre de César?



Oui.

Citation : Gigotdarnaud

J'avais fait un petit programme comme ca, mais en C, je peux l'envoyer quand même ?



Pas très utile comme correction d'un programme C++. Mais tu peux toujours poster ici quand la correction sera dispoible ou sur le forum C.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
30 novembre 2008 à 12:01:37

Bon, finalement je le "corrige" façon C++, m'enfin c'est du C converti, avec string et autres, c'est pas le mieux... J'ai bientôt fini de le transformer, je l'envoi cet aprèm.


EDIT : Voila, c'est envoyé, par contre, le décryptage doit obligatoirement être complètement automatique et basé sur la fréquence d'apparition des lettres ? Sur un texte court, ca peut donner de mauvais résultats. Puisqu'il n'y a que 25 solution de cryptages différentes pour chaque lettre, il suffit de toutes les montrer a l'utilisateur, qui, lui, reconnaitra instantanément le bon texte, et, partant, la bonne clé...
30 novembre 2008 à 18:57:00

Effectivement, en voilà une initiative sympa !

Super ambiance, exos intéressants :) .

Je me suis amusé à faire ceux des mois précédents, et ça m'a tellement plus que je viens de poster ma réponse pour ce mois-ci.

Voilà, bon courage et bonne chance à tous !
30 novembre 2008 à 21:11:26

Première fois que je me lance dans ces exos...
J'aime bien, je vais tenter de finir la partie cryptage décryptage ce soir avant de passer à "cassage de code".

J'aurais une question... Le résultat chiffré doit ressemblé à un truc chiffré à la main?
Ou alors il suffit de chiffrer ça "comme un porc" en ajoutant juste la clef à l'équivalent ASCII du caractère?
1 décembre 2008 à 3:14:53

C'est la question que je me suis posé également, et au début j'avais juste chiffré ça à la sauce bourrin, en appliquant la clé à l'équivalent ASCII de tous les caractères, ce qui fait que j'avais de %$ ou autre qui apparaissaient. J'ai donc modifié la chose pour avoir uniquement des lettre de l'alphabet. Par contre j'ai un petit soucis avec les accents et je suis obligé de faire un cas particulier pour eux, car j'ai repris la méthode de calcul de http://fr.wikipedia.org/wiki/Chiffre_de_C%C3%A9sar pour le cryptage.
1 décembre 2008 à 16:07:22

Non,non, il faut que ça ressemble à un truc crypté à la main.

Pour les accents, convertissez les en caractères non accentués si vous teney réelement à les crypter.

Je vais peut-être mettre ça dans la donnée.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
1 décembre 2008 à 18:44:20

Personnellement je ne me suis même pas intéressé aux caractères accentués, car inutile et inutilement compliqué, et mon code est déjà envoyé, je préfèrerais que tu ne demande pas leur gestion obligatoire dans la donnée, il aurait fallut le faire dès le début. Voilà c'est mon avis.
1 décembre 2008 à 18:53:34

Tout à fait. C'est ce que je pensais faire. La gestion des accents comme "bonus". Ce n'est de toute façon pas la partie importante ni intéressante.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
1 décembre 2008 à 21:15:12

Les romains n'avaient pas de miniscules, non, pas grave si le texte qui ressort est tout en majuscules ? C'est la seule modification indésirable, tous caractères qui ne sont pas entre A et Z sont conservés tel quel. Faudrait mettre un système de note si tu as le temps, une simple note globale vite mise sur chaque exo, en expliquant si il faut les lacunes...
1 décembre 2008 à 21:30:44

Bof, ça lui boufferais son temps libre.. Pis ça sert à rien. Je veux dire, tu te rends bien compte si ton programme fonctionne, non?

Aprés t'as une correction qui te permet de voir d'autres manières de coder, ça suffit amplement. Le but est d'apprendre, me semble-t'il. Une note n'a jamais fais apprendre mieux. On est là pour apprendre et se perfectionner.

De plus, on est dans le cadre d'un exercice, pas d'un concours. Le but est d'arriver à un résultat donné. Au pire, si c'est ton code qui est cité pour la correction, tu en seras trés fier.
Une note ne veut rien dire. C'est un concept purement scolaire. Admettons que tu obtienne un 15/20. Tu peux te dire : youpi, j'ai bien réussi. Mais les 5/20 que tu n'as pas eu corresponde à 1/4 de la note. Tu aurais donc 1/4 de ton code qui serait faux? Alors qu'il fonctionne? Les notes sont une absurdités qui n'ont leur place ni ici, ni dans nombre de paramètres scolaires. Rappelle-toi les cours de philo, histoire-géo, langue, littérature du lycée. Tu te rappelles avoir entendu un prof dire "Un 20/20 est impossible dans ma matière". Pourquoi? Parce qu'il est impossible d'apposer une notation sur un tel exercice. On demande un cheminement de pensée afin d'arriver à répondre à une problématique donnée. Si le chemin est suivi, si on arrive à répondre au problème : le résultat est là. Il y a des milliers de manières d'arriver à ce résultat, que ça soit en philo qu'on programmation ou sur tout autre application.

Une note n'a pas sa place pour ce genre d'exercice. Les anglais (entre autre) l'on compris : ils notent par une appréciation. C'est bien, trés bien, assez bof... Ca veut dire quelque chose, ça, au moins...

Comment tu t'en doute, je m'oppose énergiquement à cette idée. On est là pour apprendre, non pour passer un examen. Je le répète, on est tous ici pour apprendre. C'est ce qui passe avant tout.

Nico
6 décembre 2008 à 20:12:39

Citation : Gigotdarnaud

Bon, finalement je le "corrige" façon C++, m'enfin c'est du C converti, avec string et autres, c'est pas le mieux... J'ai bientôt fini de le transformer, je l'envoi cet aprèm.


EDIT : Voila, c'est envoyé, par contre, le décryptage doit obligatoirement être complètement automatique et basé sur la fréquence d'apparition des lettres ? Sur un texte court, ca peut donner de mauvais résultats. Puisqu'il n'y a que 25 solution de cryptages différentes pour chaque lettre, il suffit de toutes les montrer a l'utilisateur, qui, lui, reconnaitra instantanément le bon texte, et, partant, la bonne clé...



Il y a 25 solution pour une lettre. Mais si tu prend en compte le fait qu'il y a (j'imagine) 10 lettre dans ton fichier, ça te fais: 25*10 solutions de cryptage. Et sur un très long texte: 25* (insérer un nombre). Donc faut une autre solution...
6 décembre 2008 à 23:53:43

Non, dans le cas du chiffre de César, il y a 26 solutions possibles quelque soit le nombre de lettres.
8 décembre 2008 à 12:42:35

Salut mes amis je vaux les exercices de programmation c++ aider moi svp
8 décembre 2008 à 19:01:50

Citation : corel

Citation : Gigotdarnaud

Bon, finalement je le "corrige" façon C++, m'enfin c'est du C converti, avec string et autres, c'est pas le mieux... J'ai bientôt fini de le transformer, je l'envoi cet aprèm.


EDIT : Voila, c'est envoyé, par contre, le décryptage doit obligatoirement être complètement automatique et basé sur la fréquence d'apparition des lettres ? Sur un texte court, ca peut donner de mauvais résultats. Puisqu'il n'y a que 25 solution de cryptages différentes pour chaque lettre, il suffit de toutes les montrer a l'utilisateur, qui, lui, reconnaitra instantanément le bon texte, et, partant, la bonne clé...



Il y a 25 solution pour une lettre. Mais si tu prend en compte le fait qu'il y a (j'imagine) 10 lettre dans ton fichier, ça te fais: 25*10 solutions de cryptage. Et sur un très long texte: 25* (insérer un nombre). Donc faut une autre solution...



Le décalage est le même pour toutes les lettres, sinon on aurait un code de cryptage aussi gros que le texte, et sur un très long texte... :p
9 décembre 2008 à 17:51:32

Citation : BoudBoulMan

Non, dans le cas du chiffre de César, il y a 26 solutions possibles quelque soit le nombre de lettres.

Citation : Gigotdarnaud

Citation : corel

Citation : Gigotdarnaud

Bon, finalement je le "corrige" façon C++, m'enfin c'est du C converti, avec string et autres, c'est pas le mieux... J'ai bientôt fini de le transformer, je l'envoi cet aprèm.


EDIT : Voila, c'est envoyé, par contre, le décryptage doit obligatoirement être complètement automatique et basé sur la fréquence d'apparition des lettres ? Sur un texte court, ca peut donner de mauvais résultats. Puisqu'il n'y a que 25 solution de cryptages différentes pour chaque lettre, il suffit de toutes les montrer a l'utilisateur, qui, lui, reconnaitra instantanément le bon texte, et, partant, la bonne clé...



Il y a 25 solution pour une lettre. Mais si tu prend en compte le fait qu'il y a (j'imagine) 10 lettre dans ton fichier, ça te fais: 25*10 solutions de cryptage. Et sur un très long texte: 25* (insérer un nombre). Donc faut une autre solution...



Le décalage est le même pour toutes les lettres, sinon on aurait un code de cryptage aussi gros que le texte, et sur un très long texte... :p



Oui, excusez moi.
15 décembre 2008 à 2:56:51

Exercice du mois de décembre 2008



Nom : CRYPTO 2: Chiffre de Vigenère
Sujet : chaînes de caractères, algo


Continuons donc dans l'exploration de la cryptographie avec un système plus sécurisé, le chiffre de Vigenère.

Introduction de l'exercice du mois



Le chiffre de Vigenère est un système de cryptage comportant une clé servant à encoder le message.
La personne qui crypte un message a également besoin d'une table, la "table de Vigenère".

Image utilisateur

(Exercice bonus: écrire un programme qui génère cette table en zCode :) )

Pour encoder le message, on recopie la clé en-dessous du message autant de fois que nécesaire. Par exemple:

Message: JOYEUX NOEL LES ZEROS
Clé: SDZ

Cela donne:
JOYEUX NOEL LES ZEROS
SDZSDZ SDZS DZS DZSDZ

On prend ensuite la table et pour chaque lettre, on cherche la colonne correspondant à la lettre du message et la ligne correspondant à la lettre de la clé. La lettre se trouvant à l'intersection de la ligne et de la colonne donne la lettre du message crypté.

Ce qui donne dans notre cas:

BRXWXW FRDD ODK CDJRR

Une animation flash est disponible ici (source Wikipédia)
Vous pouvez remarquer que une même lettre n'est pas cryptée la même chose dans les deux cas, ce qui était le cas avec le chiffre de César. Plus la clé est longue, plus il est difficile de "casser" le code.

Pour déchiffrer, on applique le même principe (quasiment). On recopie la clé sous le message. Pour chaque lettre, on sélectionne ensuite la ligne de la lettre de la clé. On cherche ensuite dans cette ligne la position de la lettre du message codé. La colonne correspondant donne la lettre du message "en clair". L'animation flash montre visuellement comment faire.

On ne considère que des messages sans accents. Les espaces restent tel-quel


Votre programme



Niveau 1



Vous devez fournir un programme permettant de crypter un message en laissant la liberté à l'utilisateur de choisir la clé qui sert à crypter le message.
Ce programme devra aussi permettre de décrypter les message reçus.

Vous pouvez aussi donner la possibilité de crypter (et décrypter) entièrement un fichier.

Niveau 2



Votre but cette fois, est de "casser" le code sans connaître la clé qui a été utilisée. Pour ce programme, la seule information à votre disposition est la taille de la clé.

Voici un petit texte (spécial :-° ) crypté avec une clé de longueur 5:

GRNQGYIASINLCONVNQFQZEASKTEOOINTRZNRDVFCUEE
QWYEYSDEUGFGCEAHKECRHGPRVHPRPRFGPLNFEYUCSUR
TECRYIFOXVCRJGESNDGETRQGEIFSFHNRJGEIGSDNNNZ
GYEZONFTECONLRDOBRGSFHLPCTRCESRRPBFVRDRQGQE
FWTORVGGQUAWQGAYWXEEFWCOOYWVRSFOEEEFCPGEESK
ATRQQECEIGYNBGCYBNHTBSRHTRLNGCHTRZDNTVAKRTG
SXVCRJGESNRWWEHEWRFVHPNCESORDVQCYLRGGYEAWVR
RRZCCSRZNVPFCFNLVJTRIYPCGLNHWEBVBGOAGZKFOYS
ORRNJCYEYSXRRESUVOOSKQUCSTAOQSJCOEHUHOOGGQA
AHGFOAOVRTRWPGERRKIRRGURCRFGIEFSOVTCSUGENPN
NGHSTOEUZCETFSEAAFWRRUDICYGRPTRSRZCOOESFRLBF
GIAYIGVDVCOREGWTRHRGKGEOOVNRQFGCLVSNBSAIUVAY
OIRNRGGPRRHGIEEPGAUYONVNFHCEDRQKAQBQEVSESVFA
ZWPPIFRTNIYZGFIASINLRGKYAIOVNRRGRNCRQCEEFGGP
EACKEBRZBRBHHJBIYCHSEAGGGIESNRCUCHVTNRGFEEHU
NLHHUNNTFQOERHGGESWGIRRGCQAZFCHQHSKYEPFKGAOF
WCTBUTREUQGECHSKYLNJGAIEHWRFSWNRGRBKNLNZCEUR
AWEMHFGFUQSWAEGWTRVNGGYIASURPNFGRLRDGVRRUGYE
RFQQEUSRZOEHGYLVOVNBNZCSRRBCGIISNVTVUGEETOIA
EESVAEZFGFSNQKYFESOVTFSUNPRBCRHPOXNLRHKZIQSK
YNVOERSHFUNUGVCFAERTRPHHGYLRACTIPWGAAZCTGEZS
NVTHBKTNNFGYEEORFOQSNNCFSOHMVLCZEYOJRPBQGNNB
BQKOOSEUAZSNNZHFGWAPINRRGCRNZRZGPEQFGZAYODNR
SOKOLROTFIACGYEZOEHLRACATRWXEETZCHQHSRVSYOKE
AGCPRSVQCETFCWENBWUFIZSFVCVBCYEYOWGRRUNNCRAG
YBNZWANNZGETNWPVPBZNRNESVRTRFIRRPSTRPHRGATRB
KGOOOEPOGIFRSVFDEIBFKZERVREOYWZRNRQTBPUCTRTH
TGERRGNNVRBKEVRZWBCESEEOZOPGNRFCTEYOTNVRIIYA
VFGFEQOPGEFSNMEIWTFTBPURDRBVEOZOKAEKOEGEGBGZ
RBRURLYSURSFOOFOASVAIRFVROPONYIPOXRCNBGZCNFE
RNHHTBPZWPBIFFGZBHGENDRRGEUCHKIEFODNBVZCQMBB
GFTNTKYAPQTHTRHGOLRISHAEWCAERJKGAGBGGAGHGATV
CPRBRBKRRSOEGIPSTRSFCTGIQITREYQKTIGONCATOIAO
ZSNRHRFQFSRZCZEAHGGRBARRCUCEBLNHERLNWFGOGSOB
RQBKYACZCGIEWVHEYPKFCBFPHCRGCPRRPGQENISHEYPC
GCRXGFUFDCYAPSRVETSVBRCSFBDEIGFINTGYLNVVBTAS
RRUGBKYEOWINRHSTOEMSHYEHUGAIFHGRNEIVPOAGWZAQ
OTGSBBGCIQSQYIRBPRIPWTBTRVTHTGCKQIQSOTIASNRV
RFCRLHPKSOPONYIGVQFEGBQGRRDCGHBGCYAUOWGEHFFR
SRQUNLNACYEPSNHCVRGEIBBGPLNHGRLYSVRNHSVAAOIV
VTRAONLSOORDRUTRVVRGWUYSRZAPSFBIASFNXVCORSFO
EFEZSFRCBZGIEAWGYAUZGIEEPGRNVJTRNRGWPEEBKNRE
SVRRRVENJNACVSYIPNBBZKEAYSJNSNFFAUBHVBMNBCRC
UCNNRGGWBHGOTNZRFQOEYZGQEOCTNHBGCPRRDWGEISTG
UOZGHQHONVTRGKIEEHWNLNDCETGOTVFRRGPAYWVEEFSV
AUYBCYUGFQCSVZURRVOFRCRPCFIYWEVSRIVVLNDTVEOC
PMEFGCZAEWVNIAHQEAIWNNIAGOBNFHTRSVRQYAGFGQNN
SPFUFFGIEFSXNPBFGFAEPCYEGSDRTRGGANBQGQUGSNYI
IFGZOEHGZEEWVHOGFCCUNSNSEVZNVEYCUVLYWCWEESOV
AQSNHCVRGCEGOTQRNHGGAESKAEGHGOITZGHRPFWRLACP
NCRZQGSVTCECVGVBIQWVBLRQQRUEZKRDNAQASGFGIEYI
CAGRBKOEGSURCNDURUQCFRLVFGGSNFKAEFSNYERZCPIQ
OTRTVBCORHHKQEAWPVVRRGWAAWTRLRDJRNVLGIEQSUNB
YSURCNFVRNRDGHTRUCEEEFCPIASUEAQWCYEFSPZAAONB
UOZKSEGWEUERBCEGVZGSOHRTRPEWZVLRRGYATCTTOASG
ARBQGGOYWEBRASGPAEHGYERGKEEASTHMOODNNAWTNMNF
GQNBGCAIRFGQEZWOBSNDCLSNUGQOHFEDOPFGFOHGKIEQ
SENLRJQYCNBTBCGOTBTPSNRDHDGEEYWXEEFGKYEASDNV
NFFEECZKRSHFUNNHZNVTRBWNJRPGYGRWRFEVHGOAAONR
LRVENHLRTBMRZCEICGCYTRFKBNRFTREYCTRLRWHVMNFO
RLNRGQEIWTRDNZCQIASFBRACGYCESEUEYOPVCVHCIEEB
GTEYSGQEFPQYAFOPGOAUKIRRTKPUYSFRLNBGIAVFQALN
DCYIFGGRLHUPBSRGUNNFCTTURWNRCEIUNLRGGPSNZWGS
NBIVOZSVRSFWEEAASWERHSPNRPWUFEGSOBITBCFTHZCF
CRGGYAFITPEYWGHGECUAAFGGFOAUWYERGUVLNDCYNBFK
NVRBCYEQSNHCVTGEVVUPBTAOUNLBPURDRSNRGRBTRVNH
KPIAONRHPSTPLRCPEOQSPVDNZCQEEWXRDRRCYEZFCZIS
WGYEECNREEFGAOVFGGLNGRVRNZGZOERAUAPVGYEYOPNB
RHKRSCWGTLRPGWAHBGGIYZWAAFFWFEVZRRRQFCIAOSPR
LVGURRIWNRRRDWQEYSEGOEOVPOEBCPLBJGYAPSFRVVGW
BSRFEBQPFWBDRUCFYNDCFOZWORDRFGVNNGQADRFCZAEW
PAAOODZUESPRRVGGRLRHTNCRSPEOPWNBTRQQENRSPBGE
CINLRRGYIKWTCEERWBFRZKTRNBGRHPWVRFVZDHOYOPNM
ASURLNWFNRFSPVCNFTRRNUGGURDGAEGFCPEFSNOAFSFR
VRLKAEUDGYEEWPNJRRGIIAWPRDVHWEBNBKGEEOFVCNZG
RLYSURNVFCFTRFKYEQCFHEFDCPEFSVRBVBGTNNINRVRF
VFNBACQEVZTHEBQGYOGWFVOGGKPRNTKFTBZGPAACPYEH
FEEURZIVBRHVRNVSTNTRHCEDEOVRPRRKPUYSFNIZSTRJ
NWNYIFCNRIYZKRFYSCHPNFVBUGWTRMRHTBMRFXVLYSVH
DRQQANRGGGEOSVRLNPTNSRFQCAISURVRFUHSASCADRFV
NLBRKFEEHUAOZGPVAYWXNRBHPVAGWTNMNGURZACDRIED
CYIGIGFIPWNVSNPGPEQOKEEFZKFPBFVHLNBNHNGSURRG
WNNCRRGSIEOVGRNDCYAHHTRVVGGGIYOWDURZDHTESXRT
HDGECNGQUAECDRDRZNRBBFGMAEOVUOHGVEAYCJPENBCZ
OGHQHNQFCFAUSNNRVZQOAAINFINACWAPVGEEGSTEAVBT
RCHGGAEEJKAERPTRVRZJNLRWPRVRZQPEQSORSPOUFEZC
KKAQSPVOQSENMCSNHJRRKIEEUGQEZOHYAZAGGIGIDNNG
SWAEGSNYERHCYCRBQVRRRKPUYSERLNACYAFQGFEQFWRT
HOJNLNGQUTNDGETBBVRSBVVVLYOEBFVPWYENFGIEYSPV
GZSFVDVCVGUEVGGOEWEVEABGVLBSFVPRBQFTEOFNMHGP
BCGITAERHUVNRUWRLSSBRBESWEATWDRLVBVHECSPGOGV
CYLRTCVSRITQOQSREOGSIRICSENLNDUHSRXGPTNPNRUD
ICRDRPGECNGGPUAFQPSVPNRUGWTVTNZRNLVBFEOZSVBT
QWCYEPHCYOPCJPECAQETRHPRMNZGFSBFGUEYSOBNTOIN
PYOVVGVQNREEIFVTECUFEESEVTPOHEEVBGOEACKGNRHV
NTRBVNTVJGRNNWTNUDIGYBRHGGUEQENLVTCGSRBQZDNZ
KOAOOURVVHRHRRRGQAPGWOMRFUVOAWOCOEHWAEPFCPMR
BCPEIOEVLYOEBEGFGVNGSPBSZOUFEFSNYEFRQEMRBVRT
POZRNVOOBRGBGQEFPQGSEWXRZYSURTAOFRSRFKNLTIGI
AEONRGNFGATAOOBRPSTPOHZGIRVBGIAYGGERRTWGEECJ
COEQGAEKWNBRCVGRMVFQVROFKFEQIVBCPODBTVBGGNRR
WCEESEEETFGGEGSTAEYZQCIAWCGRRZCANHZCOLRAGPAY
UGETHONRLNBKPIQSOVSFWQARHCUGRNQKFEACVNRVONFI
CSWDUNZIRRIWGGNNAGYUPOORLRCPVSEOGYBVOHEAOONN
MRFFRCRZGMACCVEEYIENJRFWMAYSONHPSDBXBBQAARQQ
CEUONRMNLKZUZSUPAYSFBSCOTRLRFCAGVBWGIYSORTEC
ONNRWEVGNAGYLRHWCEERTNSNVVHAFFWFEPOKALVSFVMV
HGYAIOEUENBGCAFSUGIZSTSLVQCFSRFORNGSTRNTOIRR
RUKGIYSXVTNBGEFNZCOAGOKYLRHTBMCSJRDBFGRLRUGE
IRDGYERFCCEFSPVLRGCIEEWVRNHSFHSRFWZRHAGHRNZC
YAVBGTEYWHSEHHTVNRJCYLVSWPRRQJREEUQGPHFDNTVF
ERLVSWDUNFONDNGGEVRWHRTRHGRBBFIAAFHWYAFHTRSR
RCGISCJPEYSTVTRGPRFSCNVEBVVHBRNNRBEWQAEPSUFE
EOERCNDURRNHCIAYWURLNUGAIFSNYINFFFIPBKZAFHGE
SVQEBQAWERDEOVFNVZCYUASDEEISVRRPSURNRUCYAVGW
ASBZGVLCSTQRNHCOEGWURHRFKGERAQVDVSWYAISTBLRR
GEOOONRSRFDRGYOWDURDKFAAQGFTEONUEOFGHGNZDNEG
GGCTVAGFEISTRCRGURRIWFREGBKRTRHCAOFSVAAQSUOO
HGVEOCVGQOAFGCUQWGOOVGGERRJGYEYOXNRRAGYOFWNG
AOSPVBEIVNLGODYIRFXVLNRKBSCWNYEFDCYEESVVNRZG
FEYZCPIQSORRPOPGISSWDURXWQAFFGIEPWXRTGSKZIGO
DYEGICFAYSTGEFCTGAOZCFOAZGHRPFQPEGBKRRRHPBSR
FENSFSVVLBPCVSRFXVLNHQVNHRGFIEPTVSRRGPEQSVEO
CSRRRPSTBCYIFRTECOCEYOOBRGGNNMRZGYAAODRTVFGI
EAIFRSVFGPEGFGCAFFGIEPWXNSVZRBRGSURPHZEEAYQG
EECSPGIEQGGEPFKGNRDGETHFDRLRZWPRRVCEIQSNYEGO
INBRUKRNRAQEDAWNNPYOIRNVZGPAEHIROEUGFPRFGP


Niveau 3



Ecrire un programme qui permet de casser le chiffre de Vigenère sans connaître la taille de la clé.
Voici un petit texte crypté à l'aide du chiffre de Vigenère:
OZGGRPZRZOGPCECMILXSZIEIDOKFNKRXZTRIQMIECMXGHPVPZJXYGVVT
ZVZMEGVXZKXMGRVTZZKGYEIGGCVIFIKVJXRMFEMMXMBIEWRTZZZIPIIMNMJYAIMI
MQZIOEEEGMRIZECWOZUQNPVTHWXXRHLPXWXIPVVTZXUVGIUIXMJIFMIFMQYIQYEM
JBGPVZIINQGFBPZXZAYEPVVWJVZIEIZROMISEGIYZTTSFECFVBXSFIKVZTGWNYKI
GJGXVQZIOBKZVGVZZZYEQYAIPYAISMKRVKXIZIUMXIRPRWVPZVOXRVVPVXYIYPZT
NWJEYMMVZQRFNXCEOCXFVRVFVBRMFSCIHMXEIECIGMBIEVVWDWHIVHLTZZTSQIYT
JZZWHSSWZLGRGIJSIIZIGIZROMKHVZIINAKGRVVZZAKQVXGINBKEOPRKPMXFRLCE
MBYIPRRWDXKYDYRPBMHVRWVPVJUVRHVPJZKZNPLIDLOSZIVXDZKLRWZXZJGXNVUV
ZXRMRPFWICYMNPRKZVKWRGIIOMBIEFVRPTGPVRJXVZJIPMEUJKIMFVVXNISMAGZW
YZGMYPVWDVKKNPVWDTGZNXRVZAVEPITEMMYWRGVRJQXFRPQIWCZLBMCSANKRFIKM
MMRIPLFJDBGHRWVVOAGPHXJEIOXSOIVXZBKJVIMVZAGHNQIEPYAIVPVGMQZEOVLT
OWMVRIYGZZIYRMCPVDKRVVKYZNLMYIXIIQGPNPRVPMSYEQLVZAAHRYEIOQXIIEJI
GQTIFIGEMMKPRTVMMMMIYIVVJLKLRTDSMBKPYMRXVJGPNJIIIIZMIICMOQMIEIXE
BVKVRXEIHZKWFETMGNXIZMKWZAGTRRRICKGZNPVXDUOHRMCRDIIIFYIWVCZLNWRV
YZKTHXVPGMSETMTMZVGQBVKIHMRMGYEMBVGVRPVVVXYSQICEXAKQHQZBVUKPNLVT
JKKEASESSWHIPLRQZTGDHVVNVKAPRVKSKIFIYITIYZKQNPRFVZLEVFCIVZYMASVP
ZUGGHPVQVVZIVZIIBTGYDYVTDAREVVRXJVKWVGRVOAUYERFMNAOQRHZGDVGPRPRY
OZKKYETIHMRFNPLRIIRIEXRMIQVSYPVRMMZIGIIKZZIIEIGYYMTXRRZXJJGGPSKY
YMYMEFIMJZOQRIYTMWRMKIEIXZUTUSIIOCLIEVVWGIBIAMIZZTASPVVGMWSEAXEI
MIMIYEIEQMAKYEZVZAKHNRKINMRDRZZVNBUFFIUIIBXSZEZRZFGGGIKRZUXSQWVP
GMYIFWRQNWTIGRZIMBKSPECPDKGZRGRRZUIEEGVRPBXSCQZRJQYVRQSYNKGHRHVV
PXZMIIJEWIHMYEUQJVKWGEWMGIIGEYKIOMHPRYHYVZOEAIVZDBGXAIKEOBKRGMFR
ZJKRVIIJVKZMPIIINAUVGMUYMMKPPMXMOIRTNKRKIWSIYIYIMWYWRPRQZVZIGVFQ
KMILBGFPVBIIYEZHOWZIZSIHIQRECPRXDZOXHICFDAISERLGZAGGEISIYMGYDYVP
WIZGRNVWPAVEYETIKQKKRXFVKMJSQVLINQGJRPCECBUXAIGIPBTMYISMBIXYRVSI
UMLPRYXIIQYXRIEVPBISAWLQVLGVGWFRZXOHRSCMZVTIVGZVJBKLEYKXJQJMQIDK
DVKPRZVVVMRYOMWSXIRPVXYSNMZRBXIIKIZLBWRPVPGYGILVYMYIPWRPVUGPRGVP
PKOHRVZSIMIPNXVIGTKXRRLIOVGFHXZXZUSEYJRQZLKKEIMMYMPYYIGQVKKHBMEI
YIDMBQVWNIIWRQVHZKUPRZVRDMREUPVZZZHIRRZZMMTIFYTIMVOEEVVXZZKLPEAE
HIOWYYEEWWRMEECICIYEEHEYJBZSZEEEZKNSYEIXNCULGEIEUMXSOICPZLKFBVRL
JAGGEIGYOMBIEXLFGMAUHECMOMYMIIIXPIRECEIXOIXMSIUIXIRMGVVWZBTYYRRP
PBXSCWZPNMXMNHVGZJGWVPZGDAKYGMCEKZOIOSEDZAYEZEIMOIORGSIEQQREVRJQ
JVYXEIJMYWREGVVHIIKRFYJVZDKWRZRTJZKWNVSEGMZIOIKINMTRBGVHPBKPYMMV
ZUUVGIDIMQZYBXIEKCGIYJVMGTOIYSJMGTOEWIIIHQGHRPLGDLKTRXRVYZGXRXRV
ZQTIGXVFDORIHVTVPMRRBRRGZTUXFMWEMKOWGSZHDBUPRGFIPZRMRHRQJVYXEIMI
GCGRTIEMWMZIFITEKAKYQSUIGQXIGWRVDVKWRPCIZTGGVHRVZBORNFIYOQJIAMEM
QMJIWEEMMMRICLVRDFKZRHVWVJRIFITEMBKRRTVYOMMEEIIVVKORRWIEYQGPRWVR
HITEYSLFGQLIGMTLZMTEEKZPZNUYQVVTMQDMYIUIGIMSEKFRZMTVBGVXJTOGBVEI
ZKGVGICIZAOVRRVVPUHEOEERDZGQNVVHIWYEAMVVZLKQVQFWVXGCFEXIYWAVPUFG
MMYSHWZZZLKGNPVZJTIEAVFGOIXSGGVPZLATRVVPDDXIFWZPZVKFNZRVYZKTYMVW
PZYEAYCPDBKRHEAIWMRKRMGWZQZIOEEEGMRIUGRLTLXSZICEMQVWNPKIMQURRVII
ZTUVRPVMAQSEEQVPVLKHRZZVZLGPNHZRZLUVASVPXZKGUICEIQIMGEMIMVKKRPVI
YMYFBPRWVVZSAKZZMMLMPYCIYMREAIMEDZURYEGEGQYWRICYBVUWRWJEIAUVTYVM
GMIVHWRPZAKGFECYOAGRTMFQZBKWFMTVVVKYEVLIIIXGVWJIOMSSVKEENBAPNWTI
NMREFYIGZTOIHKISNVGWFIJSIOAPRIJWDTGTNPESMQGZRRRPZLKPHGZJZZBMTRFX
IIYEYSSWZLKIYIXIIZKZNXZGDVGPRLTIMKRIBRISYMTMQECEYMXMIIUIYIRIZVRQ
DNOIYIISGMKVEIESDZKXYEJTDZGPRQFVYGNEPLVPZTGRNFVXDMYTVIXPZJKNNYEI
OQRPHRRWMCYIVPGIMLXEIESIIMRMFWVVQQRIEIGYYMRIPXFVVBISERRGGWBIYETI
YMBMFYFWZZISDGIYJLKKNWPEKIYSZMDIYMXIVRRWJVJIEEDEMQTRNFRFHCXIAIIM
NMKPRXIEXMKRESTMGWZIPSIRZMTSTVFKVTKHRPZBDZVIEHLSAMRMTVRRZMNGVXVJ
DTHYBPRRVUTIFICEDLGVFIEMXIXVRVRKZBAICIEIOZGGRWVPWIYIQIMISQTIUTVP
ZZORNNVHZDORVRVHDBAVOEEMOMXEQMTEGMKPYIJIIQXEFXVVDTKHBHLINXGGRWVX
ZJORRKEEPTKZRVKWIWSEQIZPMCKSPICSOQJMBXJMXZGJVWKSGMIEASEPZCXGEYVP
BQHIGXVRDMXEGIKEMLXEGIGIYQIYYIUEDUKVRNRMGTOWBPVMGTOISPVEPXGVGSLX
DZKQRXISHMXZVPCIOCJIPSERZAKXRFVXZTGFEEJIMWVEIIJIQMXWHWEIVVJIEXRP
JLOWRVKWIWSWAMRPDDGVBXEMVBOVNQRWNMFRBFVMMXGPVXLINQIMYMJEWMIIQEZV
ZARMFTFVOCREAPLROMYIEXZPVKKHRJZVVBZVNTRPVCZVRZZWZBOPNYHYZTHYGVVZ
ZBATRVTENWNEESSIYMRPRFFVZHGVNXYSPAZVNPFLXMGRNQFXOWARQVRWVPKPNVZP
JJGRHPJMVUGNNGYIMMZIEVRMIZKGHWVRZZBMAIVFMMBIYLRPZQTIIICSXMJIZIJG
VAYIZSZBVLKRVSUIXISTRPLNZLOZRVXIYMSESPRQHMZMGYSEIBKYAIKIGTKIGECG
ZVUMEIUMXCRIPICEHIREFGVWZLXYRXLECIREFSYXVXKVGSEXZAULGMCPVKUJVFLP
ZIXIIICIIQMQRHZHDWZXHVYIOWXMPMVRIMOPBIUMKMTSFXIEYISYFRFGOCXRRIKW
DVKKHICJZHKFEILVVOOFRPZROCKTRRKSOPGPYIWEDAKYEHFHZXXSGIXIDXKGNPRT
NCYIWITXVJRIHULEZLKFRVTENMIYAVFGNQHPRYKMMQZEYTRPDVJVBQVXJBJMNPVG
OIRSPSYGZXSSEXVXIMSEYIJWJZKLRPVQJVMETEGPVBOKVGCIZZAHVXISNAKVRGZX
XILVRMEIWMTSVXEIOBGXRRKEOQBIRRRMMIAUHICFZBKXHVTGVTOJNXJIIWSHNPZF
VJGWRZZXKCXIQIUEXAAFZIIWDWTMZTFVOCTIPVRGHMTEPIMEXQRPNGFIOZKMAXVR
JASEFWVWZTRIFHFVHMTXRXTESMTMNQFVOVKHRWSSOAXMIIQPZAKXAEUINMXMNPXY
ZDGVNPVKVZKRGRRQJZIIEGFYGMBVVRVZVTYIEVVJPBKVBLGSMKKRRBZPJZVLRIDM
MWOVOVZWZLAXBGTEWWZMAIKRZLATRVVGMMMVRXVXZZTIYPFTDVOEGVVPVVTYYESP
ZUKGNPXIMBAEYICEIQIMQIDMNAOSAVLSNBXEPMJIIWZEEMRPNQVIHULEGOKVIMVX
IISIYYTEHMRIBRZWMIKPOMRJMIHEYEDIMLKGRPVDVXUXEICYXIPIEYQEGMSEUGVF
JFURBRRIXWVIUECIHIDMZYDINKGPRHFWKIXIYIIEIOORHXZPZUKXESDEIMOGVKRQ
ZTRIGYGIMLXEFEYXPIYVHWVGVQTPVIUMHQZIYEMEXPKEAIGENMYXVQVVATOGNWJI
MUKRGIIIIOGKRVVKDBOPRZZXVVKVSECEWIZEVPCIOZUQCIYIYWXIRPVKZZOICICI
ZZGTRWVRDTKWNZVVDBKRHIUYNMXYZVLQZCXEYECEDVKKRPZJAMAXEMEIQIRPVILG
MMILRIIKJBVYEFRXDZIIYMVYLCGVZEUENMXZRMWIOMZIRFFVBVGWGYCENBXIFIUE
OQLSUGVPZZOXRWEIANUPVIFLOCHIMPVFMQURRGVWNMXEPITEKAKVNXRZVTOWRPRK
ZVOWRPCMVZJWVGEMHIYXRVJMXKUUAMTIYZGXFRZPVTARRFIIQMZIEGVWZVKKNPRM
NCTWBPVMGXKVQVRXVJKXVWVLZZOXRIDSDLOIHPRZZZUPRHVVJJGPRWVVWMMPNYHY
ZXOWNRTINBXEYLVFMMAKNPSEZBYICXZQZAKZRVVGZAYIEZZHZMZRVIKIOITSFIKR
VLKWOSLWOZUTUIUSIZKTHHZIWWOWRVIIQMRIYEMEMMSIYSJMGBGFRRZFMCZEYXRF
GQKVIMCEYQUWCMCPZAVEYIIIOQTIYIJIGTGGVHVQZZIEAXZJZCWYRNLHVAXIIITM
QMZXRMDMOIHPRXLENIRIEXVWJZZEOPRWJVRIHVTVJKKXAMVVZBTSFIIGVAYIGMCS
WIOWRVMMGIZSVRLHZAOVOVZWZLKGRHVXMWVICIIGZZUGYYUIOZUQCICEHWXXFPRQ
ZTKPNRRFZBOVRZVRPLKWVVVGZBXICEJVZDKGVZRWDTVSEXVWZXAPPVRPXMXICIEX
DZIIGITVDBTICIIXPZHIYICYXZKLNVZHZTRIGEXEWMMMRRVQJZJRVPRTGIMIAMCI
XIXXTIFVBMYTRVVG


Vous avez jusqu'au 15 janvier pour soumettre vos réponses à Réponse_Exercices.

Bonne chance à tous !
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.