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 |
|
---|