Advertisement
AntonioVillanueva

CODIGO CESAR

Nov 27th, 2018
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale>         // std::locale, std::isalpha
  3. /********************************************************************************/ 
  4. using namespace std;
  5. /********************************************************************************/ 
  6. wchar_t alfabetoCircular(wchar_t letra,int desplazamiento){//Desplaza una letra
  7.     wstring abc=L"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"; //0 a 27
  8.     int pos= abc.find(letra);//Busca posicion letra
  9.  
  10.     //Analisis desplazamiento
  11.     if ((pos+desplazamiento) >= (int) abc.size ()){//Mayor que Z
  12.         pos = (pos+desplazamiento)-  (abc.size() );
  13.         return abc[pos];
  14.     }  
  15.    
  16.     if ((pos+desplazamiento) <0){//Menor que A
  17.         pos = (abc.size()) + (pos+desplazamiento );
  18.         return abc[pos];
  19.     }
  20.    
  21.   return abc[pos+desplazamiento];//Normal
  22. };
  23. /********************************************************************************/ 
  24.  
  25. wstring cifrado(wstring& texto,int desplazamiento){//Codificador decodificador
  26.    
  27.     for (auto& letra:texto){
  28.         if  (isalpha (letra)) {
  29.             letra=toupper(letra);//Mayusculas
  30.             letra=alfabetoCircular(letra,desplazamiento);//Codificacion una letra          
  31.         }
  32.     }
  33.    
  34.     return texto;
  35. }
  36.  
  37. /********************************************************************************/ 
  38.  
  39. int main (){
  40.    
  41.     //wstring texto=L"ABCDEFGHIJKLMNÑOPQRSTUVXYZ"; //Test abecedario ESP  
  42.     wstring texto=L"EL DOMINGO aTACAMOS12XYZ"; 
  43.    
  44.     std::wcout.sync_with_stdio(false);//Formato para abecedario ES
  45.     std::wcout.imbue(std::locale("es_ES.utf8"));
  46.    
  47.     wcout <<texto<<endl;// Texto ORIGINAL
  48.     wcout << cifrado(texto,3) <<endl;//Codificado en +3
  49.     wcout << cifrado(texto,-3) <<endl;//Recodificado con -3  
  50.  
  51.   return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement