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

Last change on this file since 144 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.