[2] | 1 | //encode.cc
|
---|
| 2 | //het verwijderen van comments in een file en het coderen met een
|
---|
| 3 | //bepaalde sleutel
|
---|
| 4 | //Autor: Rick van der Zwet
|
---|
| 5 |
|
---|
| 6 | #include <iostream>
|
---|
| 7 | #include <fstream>
|
---|
| 8 | #include <string>
|
---|
| 9 | using namespace std;
|
---|
| 10 |
|
---|
| 11 | void Encode(string FileName, char passwd[])
|
---|
| 12 | {
|
---|
| 13 | ifstream Invoer(FileName.c_str(), ios::in);
|
---|
| 14 | FileName += ".crp";
|
---|
| 15 | ofstream Uitvoer(FileName.c_str(), ios::out);
|
---|
| 16 |
|
---|
| 17 | char ch = ' '; //eerste karakter
|
---|
| 18 | int LetterPositie = 0;
|
---|
| 19 | int StringLengte = strlen(passwd) - 1;
|
---|
| 20 | int SlashAantal = 0;
|
---|
| 21 | bool Loop = false;
|
---|
| 22 | while (Invoer.get(ch)) //zolang er karacters in de file zitten
|
---|
| 23 | {
|
---|
| 24 | if (ch == 47) //char is een slash
|
---|
| 25 | {
|
---|
| 26 | SlashAantal++;
|
---|
| 27 | if (SlashAantal == 2) //als er 2 slashjes achter elkaar staan
|
---|
| 28 | {
|
---|
| 29 | Loop = true;
|
---|
| 30 | while(Loop == true) // ga net zolang char's uitlezen tot je aan het eind van de regel bent
|
---|
| 31 | {
|
---|
| 32 | Invoer.get(ch);
|
---|
| 33 | if (ch == 13)
|
---|
| 34 | {
|
---|
| 35 | Uitvoer.put(ch);
|
---|
| 36 | Invoer.get(ch); //aanname LF na CR (Windows)
|
---|
| 37 | }
|
---|
| 38 | if (ch == 10)
|
---|
| 39 | {
|
---|
| 40 | Uitvoer.put(ch);
|
---|
| 41 | Loop = false;
|
---|
| 42 | }
|
---|
| 43 | }
|
---|
| 44 | SlashAantal = 0;
|
---|
| 45 | }
|
---|
| 46 | }
|
---|
| 47 | else //char is geen slash
|
---|
| 48 | {
|
---|
| 49 | if (SlashAantal == 1) // er is maar een slash gevonden. Zorg er voor dat die toegevoegd aan de file wordt
|
---|
| 50 | {
|
---|
| 51 | Uitvoer.put(passwd[LetterPositie] - 'a' + '/');
|
---|
| 52 | if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
|
---|
| 53 | SlashAantal = 0;
|
---|
| 54 | }
|
---|
| 55 |
|
---|
| 56 | if (( ch <= '~' ) && ( ch >= ' '))
|
---|
| 57 | {
|
---|
| 58 | int EncodedChar = int(passwd[LetterPositie] - 'a' + ch);
|
---|
| 59 | if (EncodedChar > 126 )
|
---|
| 60 | {
|
---|
| 61 | EncodedChar = EncodedChar - 95;
|
---|
| 62 | }
|
---|
| 63 | Uitvoer.put(EncodedChar);
|
---|
| 64 | if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
|
---|
| 65 | }
|
---|
| 66 | else
|
---|
| 67 | {
|
---|
| 68 | Uitvoer.put(ch);
|
---|
| 69 | }
|
---|
| 70 | }
|
---|
| 71 | }
|
---|
| 72 |
|
---|
| 73 | Invoer.close();
|
---|
| 74 | Uitvoer.close();
|
---|
| 75 |
|
---|
| 76 | } //end Encode
|
---|
| 77 |
|
---|
| 78 | void Decode(string FileName, char passwd[])
|
---|
| 79 | {
|
---|
| 80 | ifstream Invoer(FileName.c_str(), ios::in);
|
---|
| 81 | FileName = "twst";
|
---|
| 82 | ofstream Uitvoer(FileName.c_str(), ios::out);
|
---|
| 83 |
|
---|
| 84 | char ch = ' ';
|
---|
| 85 | int LetterPositie = 0;
|
---|
| 86 | int StringLengte = strlen(passwd) - 1;
|
---|
| 87 | int DecodedChar = 0;
|
---|
| 88 |
|
---|
| 89 | while (Invoer.get(ch))
|
---|
| 90 | {
|
---|
| 91 | if (( ch <= '~' ) && ( ch >= ' '))
|
---|
| 92 | {
|
---|
| 93 | DecodedChar = int( ch - (passwd[LetterPositie] - 'a'));
|
---|
| 94 |
|
---|
| 95 | if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
|
---|
| 96 |
|
---|
| 97 | if (DecodedChar < 32 )
|
---|
| 98 | {
|
---|
| 99 | DecodedChar = DecodedChar + 95;
|
---|
| 100 | }
|
---|
| 101 |
|
---|
| 102 | Uitvoer.put(DecodedChar);
|
---|
| 103 | }
|
---|
| 104 | else
|
---|
| 105 | {
|
---|
| 106 | Uitvoer.put(ch);
|
---|
| 107 | }
|
---|
| 108 | }
|
---|
| 109 | Invoer.close();
|
---|
| 110 | Uitvoer.close();
|
---|
| 111 | }
|
---|
| 112 |
|
---|
| 113 |
|
---|
| 114 |
|
---|
| 115 | int main()
|
---|
| 116 | {
|
---|
| 117 | char passwd[] = {'b', 'i', 'g'};
|
---|
| 118 | Encode("code1.cc", passwd);
|
---|
| 119 | Decode("code1.cc.crp", passwd);
|
---|
| 120 | return 0;
|
---|
| 121 | } //end Main
|
---|
| 122 |
|
---|