Éditer: ceci est connu sous le nom de chiffrement Caesar. J'essayais de créer un programme qui avait pour but principal de crypter une chaîne donnée (courte et minuscule). Il le ferait en déplaçant toutes les lettres n espaces vers la droite (cryptage) ou vers la gauche (décodage).Chiffrement d'une chaîne de texte donnée - Chiffrement Caesar
Voici ce que j'ai écrit jusqu'à présent (modifié)
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
char abc[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
void code(int n) {
string cadena;
cout << "Introduzca la cadena a cifrar : " << '\n';
cin >> cadena;
for (int i(0); i < cadena.length; i++) {
for (int f(0); f < strlen(abc); f++) {
if (cadena[i] == abc[f]) {
int w;
w = f + n;
if (w > strlen(abc)) {
w -= strlen(abc);
}
cadena[i] = abc[w];
}
}
}
cout << cadena << '\n';
system("pause");
}
void decode(int n) {
string cadena;
cout << "Introduzca la cadena a cifrar : " << '\n';
cin >> cadena;
for (int i(0); i < cadena.length; i++) {
for (int f(0); f < strlen(abc); f++) {
if (cadena[i] == abc[f]) {
int w;
w = f - n;
if (w < 0) {
w--;
w = strlen(abc) - w;
}
cadena[i] = abc[w];
}
}
}
cout << cadena << '\n';
system("pause");
}
int main() {
int n;
cout << "Introduzca el numero del cesar " << '\n';
cin >> n;
cout << "Desea usted cifrar o descifrar?" << '\n';
cout << "Introduzca c para cifrar o d para descifrar" << '\n';
char chos;
cin >> chos;
if (chos == 'c')
code(n);
else
decode(n);
return 0;
}
Maintenant, le problème est que je reçois une chaîne terrible que je ne savais même pas comment il a été formé. Et il y a aussi une erreur par une erreur.
Si vous n'êtes pas obligé d'utiliser des tableaux char, envisagez d'utiliser 'std :: string' et' std :: rotate'. – user4581301
'sizeof (cadena)' est 1. 'i <= sizeof (cadena);' exécutera 2 itérations. 'f <= 26' va tourner 27 itérations – user4581301
On dirait que vous essayez de faire un [Chiffrement Caesar] (https://en.wikipedia.org/wiki/Caesar_cipher). Pouvez-vous confirmer quel est votre objectif final? Je ne pense pas que tu doives faire quoi que ce soit. – user4581301