Information

Author(s) Berg Lucas
Deadline Καμία προθεσμία
Submission limit No limitation

Συνδεθείτε

[7.3] Chiffrement

J'ai écrit un petit programme qui permet à un utilisateur d'entrer une suite de nombres et de la chiffrer. L'utilisateur devrait pouvoir choisir entre deux méthodes de chiffrement: "chiffrer1" et "chiffrer2".

Pour le moment, je n'ai écrit que la fonction "main". Heureusement, j'ai déjà déclaré et spécifié toutes les autres fonctions que je veux créer. Suivez les étapes suivantes pour remplacer les TODO du programme ci-dessous.

1. display_array

On ne peut pas faire simplement "printf" pour afficher un tableau, car la variable ne contient pas vraiment tout le tableau, mais une référence vers le premier élément du tableau. Je vous demande donc de créer une fonction "afficher_tableau", qui affiche un à un les éléments du tableau sous la forme {element1,element2,...,elementN}. Cette fonction devrait prendre en arguments le tableau et la taille du tableau. En effet, si on ne connait pas la taille, on ne sait pas quand la boucle qui affiche les éléments du tableau doit s'arrêter !

Ne continuez que lorsque cette fonction marche vraiment !

2. encrypt1/decrypt1

La fonction "encrypt1" modifie un tableau pris en argument en faisant "multiplier par deux, plus 1" à chaque élément.

Par exemple, {1,2,7,8,9} deviendra {3,5,15,17,19}.

La fonction "decrypt1" fait exactement l'inverse.

Pareil que précédemment, ne passez à la suite que lorsque votre fonction marche bien. Testez-la !

Astuce
Ces deux fonctions ne renvoient rien. Elles ne font que modifier le tableau passé en argument. Encore une fois, elles doivent prendre aussi en argument la taille du tableau.

3. encrypt2/decrypt2

La fonction "encrypt2" modifie un tableau pris en argument. Chaque élément est remplacé par la somme de lui avec l'élément précédent. Puisque le premier élément (element 0) n'a pas de précédent, on l'additionne avec ce qu'on appelle la "clé de chiffrement" (variable "key"). Si notre clé de chiffrement vaut 2 et que le tableau vaut {1,2,7,8,9}, ça devrait donner: {3,5,12,20,29}.

En effet, {1+2(clé)=3, 2+3=5, 5+7=12, etc}.

Cette fonction doit prendre en argument un tableau, sa taille et une clé de chiffrement !

Pour "decrypt2", il faut faire exactement l'opposé: le dernier élément vaut lui-même moins l'avant dernier élément... et ainsi de suite jusqu'au premier qui vaut lui-même moins la clé !

Exemple

Par exemple, si l'utilisateur indique les nombres ci-dessous, le programme devrait afficher:

Entrez une suite de chiffres, et finissez par -1: 1 2 7 8 9 -1
Tableau entré: {1,2,7,8,9}

Quelle méthode de chiffrement ? 1
{3,5,15,17,19}
{1,2,7,8,9}

Autoévaluation

Une fois votre programme écrit, vérifiez et corrigez les points suivants:

  • Chaque instruction se termine-t-elle bien par un point virgule ?
  • La séquence d'instruction après l'accolade ouvrante est-elle alignée mais légèrement décalée vers la droite par rapport à "main" ?
  • Chaque variable est-elle déclarée ? C'est-à-dire, avez vous déterminé le type de chacune de vos variables ?
  • Avez-vous utilisé la fonction de lecture qui correspond au type de la variable dont vous voulez obtenir la valeur ? Par exemple, si vous voulez obtenir un int, avez-vous bien utilisé "scanf("%d", &votre_variable)" ?
  • Avez-vous bien complété les fonctions demandées ?

Une fois votre programme corrigé, exécutez-le ! Si tout semble correct, postez votre réponse sur Webcampus !


Le code