source: liacs/pm/backup/deelopdr2.cc@ 2

Last change on this file since 2 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

  • Property svn:executable set to *
File size: 5.2 KB
Line 
1#include <iostream>
2#include <string>
3#include <fstream>
4
5using namespace std;
6
7void Intro()
8{
9
10 cout << "---------------------------------------------" << endl
11 << "| University of Leiden |" << endl
12 << "| Programmeermethoden opdracht 2 |" << endl
13 << "| |" << endl
14 << "| Gemaakt door: |" << endl
15 << "| Rick van der Zwet |" << endl
16 << "| Pascal de Vos |" << endl
17 << "| |" << endl
18 << "| |" << endl
19 << "| Getest op: Unix systeem (Sun OS) |" << endl
20 << "| Windows systeem (Win XP) |" << endl
21 << "---------------------------------------------" << endl
22 << endl;
23}
24
25
26//encode.cc
27//het verwijderen van comments in een file en het coderen met een
28//bepaalde sleutel
29
30void Encode(string FileName, string FileNameOutput, string passwd)
31{
32 ifstream Invoer(FileName.c_str(), ios::in);
33 ofstream Uitvoer(FileNameOutput.c_str(), ios::out);
34
35 char ch = ' '; //eerste karakter
36 int LetterPositie = 0;
37 int StringLengte = passwd.length() - 1;
38 int SlashAantal = 0;
39 bool Loop = false;
40 while (Invoer.get(ch)) //zolang er karacters in de file zitten
41 {
42 if (ch == 47) //char is een slash
43 {
44 SlashAantal++;
45 if (SlashAantal == 2) //als er 2 slashjes achter elkaar staan
46 {
47 Loop = true;
48 while(Loop == true) // ga net zolang char's uitlezen tot je aan het eind van de regel bent
49 {
50 Invoer.get(ch);
51 if (ch == 13)
52 {
53 Uitvoer.put(ch);
54 Invoer.get(ch); //aanname LF na CR (Windows)
55 }
56 if (ch == 10)
57 {
58 Uitvoer.put(ch);
59 Loop = false;
60 }
61 }
62 SlashAantal = 0;
63 }
64 }
65 else //char is geen slash
66 {
67 if (SlashAantal == 1) // er is maar een slash gevonden. Zorg er voor dat die toegevoegd aan de file wordt
68 {
69 Uitvoer.put(passwd[LetterPositie] - 'a' + '/');
70 if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
71 SlashAantal = 0;
72 }
73
74 if (( ch <= '~' ) && ( ch >= ' '))
75 {
76 int EncodedChar = int(passwd[LetterPositie] - 'a' + ch);
77 if (EncodedChar > 126 )
78 {
79 EncodedChar = EncodedChar - 95;
80 }
81 Uitvoer.put(EncodedChar);
82 if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
83 }
84 else
85 {
86 Uitvoer.put(ch);
87 }
88 }
89 }
90
91 Invoer.close();
92 Uitvoer.close();
93
94} //end Encode
95
96void Decode(string FileName, string FileNameOutput, string passwd)
97{
98 ifstream Invoer(FileName.c_str(), ios::in);
99 ofstream Uitvoer(FileNameOutput.c_str(), ios::out);
100
101 char ch = ' ';
102 int LetterPositie = 0;
103 int StringLengte = passwd.length() - 1;
104 int DecodedChar = 0;
105 cout << "test";
106 while (Invoer.get(ch))
107 {
108 if (( ch <= '~' ) && ( ch >= ' '))
109 {
110 DecodedChar = int( ch - (passwd[LetterPositie] - 'a'));
111
112 if (LetterPositie < StringLengte) { LetterPositie++; } else { LetterPositie = 0; }
113
114 if (DecodedChar < 32 )
115 {
116 DecodedChar = DecodedChar + 95;
117 }
118
119 Uitvoer.put(DecodedChar);
120 }
121 else
122 {
123 Uitvoer.put(ch);
124 }
125 }
126 Invoer.close();
127 Uitvoer.close();
128}
129
130//INVOER: Bestandnaam, woord te controleren, Of het woord vrij moet staan of niet.
131//UITVOER: Aantal keer dat het voorkomt.
132
133
134int WordCheck(string FileName, string Word, int Mogelijkheden)
135{
136 int AantalKeerWoord = 0;
137 int LetterPositie = 0;
138 char ch = ' ';
139
140 if (Mogelijkheden = 1) //voeg spaties aan het begin en het eind toe en test daar op.
141 {
142 Word = " " + Word + " ";
143 }
144 const int WoordLengte = Word.length(); //deze blijft altijd identiek dus geen variable
145
146 ifstream Invoer(FileName.c_str(),ios::in);
147
148 while (Invoer.get(ch)) //zolang file invoer heeft
149 {
150 if (LetterPositie == WoordLengte) //controleer of er een match is.
151 {
152 AantalKeerWoord++;
153 LetterPositie = 0;
154 }
155
156
157 if (ch == char(Word[LetterPositie])) //kijk of een character overeen komt met de gezochte in het woord
158 {
159 LetterPositie++;
160 }
161 else // anders weer opnieuw beginnen
162 {
163 LetterPositie = 0;
164 }
165 }
166 Invoer.close();
167 return(AantalKeerWoord);
168
169}
170int main()
171{
172 int GekozenOptie = 0;
173 string FileName = "";
174 string FileNameOutput = "";
175 string passwd = "";
176
177
178 //debug mode
179 FileName = "test";
180 cout << "aantal keer " << WordCheck(FileName, "rick", "true") << endl;
181 return(0);
182
183
184 // Menu opties: (1) Encoderen
185 // (2) Decoderen
186 // (1) --> FileName invoeren --> encodeer sleutel invoeren
187 // (2) --> FileName invoeren --> decodeer sleutel invoeren
188
189 cout << "Kies uit de volgende opties:" << endl
190 << "Encodeer een file (1)" << endl
191 << "Decodeer een file (2)" << endl
192 << "Beeindig het programma (q)" << endl
193 << endl;
194
195 cin >> GekozenOptie;
196
197 if (GekozenOptie == 1) //door naar encoderen, filenamevrag in encoderen verwerken
198 {
199 cout << "voer de naam van de te coderen file in" << endl;
200 cin >> FileName;
201 cout << "En uw passwd" << endl;
202 cin >> passwd;
203
204 FileNameOutput = FileName + ".crp";
205 Encode(FileName, FileNameOutput, passwd);
206
207 return(0);
208 }
209 else if (GekozenOptie == 2)
210 {
211 cout << "Voer de naam van de te decoderen file in (eindigt op .crp)" << endl;
212 cin >> FileName;
213 cout << "En uw password" << endl;
214 cin >> passwd;
215
216
217 FileNameOutput = FileName;
218 FileNameOutput = FileNameOutput.erase(FileNameOutput.length() - 3) + "drp";
219 Decode(FileName, FileNameOutput, passwd);
220 return(0);
221 }
222 else
223 {
224 cout << "\nGoodbye\n";
225 return(0);
226 }
227}
Note: See TracBrowser for help on using the repository browser.