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 !
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 1, 2, 7, 8, 9 et -1, 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}
Évaluation
Votre code va être compilé puis testé avec plusieurs valeurs d'entrées différentes pour vérifier qu'il fonctionne bien.
Cependant, prenez déjà l'habitude de tester votre code vous-mêmes car il n'y aura pas INGInious pour le vérifier automatiquement dans l'exercice récapitulatif.
Veuillez aussi suivre les bonnes pratiques suivantes car INGInious ne sait pas les vérifier automatiquement mais elles seront vérifiées dans l'exercice récapitulatif :
- Les noms des variables, constantes, paramètres et fonctions créés sont-ils pertinents ? Correspondent-ils vraiment à ce qu'ils doivent contenir ?
- Est-ce que le code est correctement factorisé ? Est-ce qu'il est possible de déplacer du code en dehors des sélections ou de créer des fonctions pour avoir moins de code dupliqué ?
- Est-ce que les sélections et conditions sont correctement organisées ? Est-ce qu'il est possible de changer l'ordre des sélections ou des conditions pour diminuer leur nombre ?
- Est-ce que toutes les fonctions sont bien spécifiées avec des préconditions et postconditions claires ?
INGInious