-
Notifications
You must be signed in to change notification settings - Fork 0
/
nsaEncoder2.cpp
164 lines (145 loc) · 3.81 KB
/
nsaEncoder2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
//Objective: The program will Encode the entered text so that each character is converted to the next character in the ASCII code.
//Name: Kevin Jaewoo Lee 1989282
//Course: COMSC-110-1572
//Compiler: TDM MinGW
//Editor: MS NotePad
//libraries
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
//Programmer defined data types
//NONE
//Special compiler dependent definitions
//NONE
//global constants/variables
const int SIZE = 5;
//Programmer defined functions
void introduction(string obj, string ins); //user introduction
string getFileName();
string encode(string a , int* offset);
//main program
int main()
{
//Data
string objective = "The program will Encode the entered text so that each character is converted to the next character in the ASCII code. .\n"; //program objective
string instructions = "That is, convert 'A' to 'B', '4' to '5', '*' to '+', etc. So the word Hello will appear as Ifmmp in encoded form. Remember a line of text contains multiple characters, and each character has an ASCII value, and by adding 1 to that ASCII value results in the next character in the ASCII table. you must not make a data file more than 4 lines\n\n"; //user instructions
int offset[SIZE] ={-5, 8, 12, 6, 1};
string fileName;
ofstream fout;
ifstream fin;
string first;
string second;
string third;
string forth;
int r;
int i;
//user introduction
introduction(objective, instructions);
//read input file
fileName = getFileName();
string offsett = "offset.txt";
fin.open(fileName.c_str());
if (!fin.good()) throw "I/O error";
fout.open(offsett.c_str(), ios::app);
if (!fout.good()) throw "I/O error";
getline(fin,first);
getline(fin,second);
getline(fin,third);
getline(fin,forth);
// prompt the user
cout << "Enter a line of text:";
cin >> r;
//encode the sentence
if(r==1)
{
first = encode(first,offset);
cout << first;
}
if(r==2)
{
second = encode(second,offset);
cout << second;
}
if(r==3)
{
third = encode(third,offset);
cout << third;
}
if(r==4)
{
forth = encode(forth,offset);
cout << forth;
}
if ( r > 4 )
{
cout << " there are no line " << endl;
}
//output result
if(r ==1) fout << first << endl;
if(r ==2) fout << second << endl;
if(r ==3) fout << third << endl;
if(r ==4) fout << forth << endl;
fout.close();
fin.close();
}//main
//user introduction
void introduction(string obj, string ins)
{
//data
//obj is the program objective
//ins is the user instructions
//user introduction
cout << "Objective: " << obj;
cout << "Programmer: Kevin Jaewoo Lee 1989282\n";
cout << "Editor(s) used: Notepad\n";
cout << "Compiler(s) used: TDM MinGW\n";
cout << "File: " << __FILE__ << endl;
cout << "Compiled: " << __DATE__ << " at " << __TIME__ << endl;
cout << "Instructions: " << ins;
}//introduction
//get user specified filename
string getFileName()
{
//data
string fN;
//input filename
do
{
cout << "Please enter an input filename [i.e. : x.txt] : ";
getline(cin,fN);
}while(!(fN.length() >=5)); // do-while
return fN;
}//getFileName
string encode(string a, int* offset)
{
//data
int index;
int i=0;
char keepGoing;
while (true)
{
if (i >= a.length())
{
if (i >0)
{
cout << " finish encoding the line!" << endl;
break;
}
else
{
cout << "empty file" << endl;
break;
}
}
index = i % SIZE;
cout << offset[index] << endl;
a[i] = a[i] + offset[index] ; //
i = i + 1;
cout << "Do you want to keep going? [Y/N] : ";
cin >> keepGoing;
cin.ignore(1000,10);
if (keepGoing =='n' || keepGoing == 'N') break;
}
return a;
}