Cryptage message – Bac Pratique 2014 [ Algorithme + Python ]

Algo et Python 27-08-24
50 0

Travail demandé

On se propose de crypter un message composé par des mots séparés par un seul espace et ne contenant aucun signe de ponctuation (,  ;  .  :  !  ? ) en utilisant le principe suivant :

1) Placer chaque mot du message initial dans une case d’un tableau T. On suppose que le message   est composé d’au maximum 20 mots.

2) Pour chaque élément du tableau T, ajouter autant de fois le caractère ‘’*’’ pour que sa longueur sera égale à celle du mot le plus long dans le tableau T.

3) Dans un nouveau tableau T1 de taille N1 (N1=longueur du mot le plus long), répartir les lettres du mot se trouvant dans la case T[1] du façon à placer la lettre d’indice i du mot dans la case d’indice i du mot dans la case d’indice i du tableau T1.

4) Répartir de la même façon les lettres du mot contenu dans la case T[2] en concaténant à chaque fois la lettre i avec le contenu de la case i du tableau T1.

5) Répartir de la même façon le reste des mots de T dans T1.

6) Concaténer les mots obtenus dans T1 en les séparant par un espace pour obtenir le message crypté.

Exemple : Si le message à crypter est ‘’ Bonjour Sami j’ai fini mon travail’’, les étapes de cryptage sont :

Etape 1 : Répartir les mots du message dans le tableau T :                                                                                   T =

Bonjour Sami J’ai fini mon travail

Etape 2 : Ajouter le caractère ‘’*’’ autant de fois pour obtenir des mots dont la longueur de chacun est égale à celle du mot le plus long.  Etant donné que ‘’Bonjour’’ est le mot le plus long du message (7 caractères), on obtient le tableau T suivant :

Bonjour Sami** j’ai*** fini*** mon**** travail

Etape 3 : Répartir les les lettres de T[1] dans T1 :

B o n j o u r

Etape 4 : Répartir les les lettres de T[2] dans T1 :

Bs oa nm ji o* u* r*

Etape 5 : Répartir les les lettres de T[2] dans T1 :

Bsjfmt oa’ior nmanna jiii*v o****a u****i r****l

Le message crypté sera alors Bsjfmt oa’ior nmanna Jiii*v o****a u****i r****l

Solution Algorithmique

L'algorithme de cryptage du message basé sur le principe décrit peut être résumé en plusieurs étapes structurées. Voici le principe de l'algorithme :

1. Initialisation

Entrée : Un message composé de mots séparés par des espaces et ne contenant aucun signe de ponctuation.

Sortie : Un message crypté selon l'algorithme spécifié.

2. Répartition des mots dans un tableau T

Divisez le message en mots en utilisant l'espace comme délimiteur.

Placez chaque mot dans une case d'un tableau T.

3. Ajustement de la longueur des mots

Identifiez le mot le plus long dans le tableau T et notez sa longueur L.

Pour chaque mot du tableau T, ajoutez des caractères '*' à la fin du mot jusqu'à ce que sa longueur soit égale à L.

4. Création du tableau crypté T1

Créez un tableau T1 de taille L, initialisé avec des chaînes vides.

Pour chaque mot dans T, répartissez les lettres du mot dans le tableau T1 de telle manière que la lettre d'indice i d'un mot soit placée dans la case i

Dans cet algorithme, On va utiliser 4 fonctions et 4 procédures :

Déclaration des objets

Objet Type / Nature
n entier
max entier
t tableau des chaînes
t1 tableau des chaînes

 

La fonction supprimer_espaces

Cette fonction supprime les doubles espaces de la chaîne des caractères.

La fonction verif_createTab

Cette fonction vérifie que le message saisi ne contient aucun signe de ponctuation (,  ;  .  :  !  ? ), Divise le message en mots en utilisant l'espace comme délimiteur et place chaque mot dans une case d'un tableau T.

Déclaration des objets

Objet Type / Nature
n entier
i entier
j entier
ch1 chaîne des caractères

 

La procédure saisie_message

Cette procédure saisit le message et placer chaque mot du message dans une case du tableau T

Déclaration des objets

Objet Type / Nature
ch chaine des caracteres

 

La fonction max_mot

Cette fonction recherche le mot le plus long du tableau et retourne sa longueur

Déclaration des objets

Objet Type / Nature
i entier
max entier

 

La procédure ajouter_etoile_t

Cette procédure ajoute autant de fois le caractère '*' pour chaque élément du tableau T.

Déclaration des objets

Objet Type / Nature
i entier
k entier

 

La procédure remplir_t1

Cette procédure crée un tableau T1 de taille max, initialisé avec des chaînes vides et repartir pour chaque mot dans T les lettres du mot dans le tableau T1 de telle manière que la lettre d'indice i d'un mot soit placée dans la case i.

Déclaration des objets

Objet Type / Nature
i entier
j entier
ch chaîne des caractères

 

La procédure afficher

Cette procédure affiche les éléments du tableau

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction crypter_message

Cette fonction concatène les mots obtenus dans T1 en les séparant par un espace pour obtenir le message crypte

Déclaration des objets

Objet Type / Nature
i entier
ch chaîne des caractères

 

Solution en Python

Exécution du programme

Solution en Python et Designer QT

Pour remplir un tableau d'entiers à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :

1- Découper la chaîne de caractères en sous-chaînes contenant les entiers.

2- Convertir chaque sous-chaîne en entier.

3- Ajouter chaque entier au tableau.

Pour créer une application en Python pour crypter un message, on va suivre ces étapes :

1- Créer l'interface graphique avec Qt Designer

a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.

b- Ajoutez ces widgets:

QLineEdit nommé 'ch' pour entrer des entiers .

QPushButton nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.

QPushButton nommé 'bt_etoile' pour exécuter le module ajouter_etoile.

QPushButton nommé 'bt_transfert' pour exécuter le module remplir_t1.

QPushButton nommé 'bt_crypter' pour exécuter le module crypter_message.

QLabel nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non numériques ou les éléments du tableau ne sont pas dans l'ordre croissant.

QLabel nommé 'tabt_label' pour afficher les éléments du tableau T.

QLabel nommé 'tabt1_label' pour afficher les éléments du tableau T1.

QLabel nommé 'msg_crypter' pour afficher le message crypté.

Enregistrez le fichier avec l'extension .ui, par exemple tabtab-2.ui.

2- Créer le script Python pour l'application

Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.

Exécution du programme

1) Remplissage du tableau T :

2) Ajout des étoiles au tableau T :

3) Repartir les mots tableau T  dans le tableau T1 :

4) Afficher le message crypté :

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info