Bonjour,
Je réalise un TP actuellement sur la substitution par chiffrement, évolution du chiffrement par décalage de César. La substitution fonctionne ainsi: on possède un fichier .txt où se trouve "la clé" qui est composé dans une colonne de l'alphabet dans l'ordre, puis dans l'autre colonne, la lettre qui substitue celle de l'alphabet.
En général, on a ça: AEBKCUDP.... où "A" sera substituté par "E", "B" par "K" et ainsi de suite.
Ensuite, on a un chaîne de caractères stockée dans un string, et le but est d'appliquer la substitution à la chaîne de caractères. Mon intérêt est de passer par un foncteur et des itérateurs, puis plus tard par des algorithmes. Mon code actuel est le suivant, et je bloque clairement sur la substitution, alors que je n'ai pas eu ce problème pour le chiffrement par décalage (même si le dernier est plus simple).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include <iostream> #include <string> #include <iterator> #include <fstream> using namespace std; int main() { // Le message a crypter string texte("TEXTE A TESTER"); // Demande de la cle a l'utilisateur cout << "Quel fichier contenant la cle voulez-vous utiliser ? "; string nomFichier; cin >> nomFichier; ifstream fichier(nomFichier); istream_iterator<char> it(fichier); istream_iterator<char> end; string a; while (it != end) { a.push_back(*it); ++it; } for (int i =0; i < a.size(); i++) { if (i%2 == 0) { a[i] = a[i+1]; } cout << a[i]; } return 0; }
Déjà, j'ai un petit problème aussi avecqui n'accepte pas mon string nomFichier. Je comprends pas pourquoi, quand je remplace par le nom du fichier "cle.txt", il n'y a pas de problème, et ifstream est censé recevoir du type string.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ifstream fichier(nomFichier);
Ensuite, ce que j'effectue dans ma boucle for, j'aimerai l'effectuer dans ma boucle while, c'est à dire que je ne souhaite pas passer par du string pour parcourir la chaîne via les index, mais par la boucle while avec l'itérateur.
Dans l'attente de toutes vos réponses, je reste à l'écoute!
Partager