Advertisement
Darksider3

Untitled

Dec 18th, 2013
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. int mystrlen(char const *str)
  4. {
  5.   int x=0;
  6.   for(; str[x];x++)
  7.   {
  8.     //Do nothing.
  9.   }
  10.   return x;
  11. }
  12. class caesar
  13. {
  14.   private:
  15.     char *cstr;
  16.     char *encodedString;
  17.     char *decodedString;
  18.     int length;
  19.   public:
  20.     void copy()
  21.     {
  22.       encodedString=new char[length+1];
  23.       decodedString=new char[length+1];
  24.       for(int i=0; cstr[i];i++)
  25.       {
  26.         encodedString[i]=cstr[i];
  27.       }
  28.     }
  29.     caesar(const char* str)
  30.     {
  31.       //encodedString=nullptr;
  32.       int i=0;
  33.       length=mystrlen(str)+1;
  34.       cstr=new char[length];
  35.       while(i < length)
  36.       {
  37.         cstr[i]=str[i];
  38.         i++;
  39.       }
  40.       cstr[i]='\0';
  41.     }
  42.     ~caesar()
  43.     {
  44.       delete[](encodedString);
  45.       delete[](cstr);
  46.     }
  47.     char *encode(int verschiebung)
  48.     {
  49.       copy();
  50.       //Zugriffe sparen
  51.       char current;
  52.       int i=0;
  53.       while(i < length)
  54.       {
  55.         //zwischenlagern fürs Zeitsparen
  56.         current=cstr[i];
  57.         //Buchstabe?!
  58.         if(isalpha(current) && current)
  59.         {
  60.  
  61.           //Ist die Verschiebung wohlmöglich zu groß, oder ist das
  62.           //Nullbyte erreicht worden?
  63.           if(current+verschiebung > 'Z' || current+verschiebung > 'z')
  64.           {
  65.             //Dann den ASCII-Code mit der Verschiebung addieren,
  66.             //und dann 25(für a/A) abziehen.
  67.             encodedString[i]=current+verschiebung - 26;
  68.             //Restdurchlauf der Schleife überspringen
  69.           }
  70.           else
  71.           {
  72.             //Wenn nicht, dann einfach draufaddieren und alles ist gut..
  73.             encodedString[i]=current+verschiebung;
  74.           }
  75.         }
  76.         i++;
  77.       }
  78.  
  79.       return encodedString;
  80.     }
  81.     char *decode(int verschiebung)
  82.     {
  83.       //Zugriffe sparen
  84.       char current;
  85.       int i=0;
  86.       while(i < length)
  87.       {
  88.         //zwischenlagern fürs Zeitsparen
  89.         current=encodedString[i];
  90.         //Buchstabe?!
  91.         if(isalpha(current) && current)
  92.         {
  93.  
  94.           //Ist die Verschiebung wohlmöglich zu groß, oder ist das
  95.           //Nullbyte erreicht worden?
  96.           if(current-verschiebung > 'A' || current-verschiebung < 'a')
  97.           {
  98.             //Dann den ASCII-Code mit der Verschiebung addieren,
  99.             //und dann 26(für a/A) abziehen.
  100.             decodedString[i]=current+26-verschiebung;
  101.             //Restdurchlauf der Schleife überspringen
  102.           }
  103.           else
  104.           {
  105.             //Wenn nicht, dann einfach draufaddieren und alles ist gut..
  106.             decodedString[i]=current-verschiebung;
  107.           }
  108.         }
  109.         i++;
  110.       }
  111.  
  112.       return decodedString;
  113.     }
  114. };
  115.  
  116. int main(int argc, char **argv)
  117. {
  118.   char blub[7]={'H','A','L',' ','L','Z'};
  119.   caesar Lala(blub);
  120.   std::cout << Lala.encode(5) << std::endl << Lala.decode(5);
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement