Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- int mystrlen(char const *str)
- {
- int x=0;
- for(; str[x];x++)
- {
- //Do nothing.
- }
- return x;
- }
- class caesar
- {
- private:
- char *cstr;
- char *encodedString;
- char *decodedString;
- int length;
- public:
- void copy()
- {
- encodedString=new char[length+1];
- decodedString=new char[length+1];
- for(int i=0; cstr[i];i++)
- {
- encodedString[i]=cstr[i];
- }
- }
- caesar(const char* str)
- {
- //encodedString=nullptr;
- int i=0;
- length=mystrlen(str)+1;
- cstr=new char[length];
- while(i < length)
- {
- cstr[i]=str[i];
- i++;
- }
- cstr[i]='\0';
- }
- ~caesar()
- {
- delete[](encodedString);
- delete[](cstr);
- }
- char *encode(int verschiebung)
- {
- copy();
- //Zugriffe sparen
- char current;
- int i=0;
- while(i < length)
- {
- //zwischenlagern fürs Zeitsparen
- current=cstr[i];
- //Buchstabe?!
- if(isalpha(current) && current)
- {
- //Ist die Verschiebung wohlmöglich zu groß, oder ist das
- //Nullbyte erreicht worden?
- if(current+verschiebung > 'Z' || current+verschiebung > 'z')
- {
- //Dann den ASCII-Code mit der Verschiebung addieren,
- //und dann 25(für a/A) abziehen.
- encodedString[i]=current+verschiebung - 26;
- //Restdurchlauf der Schleife überspringen
- }
- else
- {
- //Wenn nicht, dann einfach draufaddieren und alles ist gut..
- encodedString[i]=current+verschiebung;
- }
- }
- i++;
- }
- return encodedString;
- }
- char *decode(int verschiebung)
- {
- //Zugriffe sparen
- char current;
- int i=0;
- while(i < length)
- {
- //zwischenlagern fürs Zeitsparen
- current=encodedString[i];
- //Buchstabe?!
- if(isalpha(current) && current)
- {
- //Ist die Verschiebung wohlmöglich zu groß, oder ist das
- //Nullbyte erreicht worden?
- if(current-verschiebung > 'A' || current-verschiebung < 'a')
- {
- //Dann den ASCII-Code mit der Verschiebung addieren,
- //und dann 26(für a/A) abziehen.
- decodedString[i]=current+26-verschiebung;
- //Restdurchlauf der Schleife überspringen
- }
- else
- {
- //Wenn nicht, dann einfach draufaddieren und alles ist gut..
- decodedString[i]=current-verschiebung;
- }
- }
- i++;
- }
- return decodedString;
- }
- };
- int main(int argc, char **argv)
- {
- char blub[7]={'H','A','L',' ','L','Z'};
- caesar Lala(blub);
- std::cout << Lala.encode(5) << std::endl << Lala.decode(5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement