-
Notifications
You must be signed in to change notification settings - Fork 1
/
morse_coder.cpp
106 lines (92 loc) · 1.85 KB
/
morse_coder.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
#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, const char* argv[]) {
fstream text;
//define morse codes standard
map<string, string> coder;
coder = {
{ "A",".-"},
{ "B","-..." },
{ "C","-.-." },
{ "D","-.." },
{ "E","." },
{ "F","..-." },
{ "G","--."},
{ "H","...." },
{ "I",".." },
{ "J",".---" },
{ "K","-.-" },
{ "L",".-.." },
{ "M","--" },
{ "N","-." },
{ "O","---" },
{ "P",".--." },
{ "Q","--.-" },
{ "R",".-." },
{ "S","..." },
{ "T","-" },
{ "U","..-" },
{ "V","...-" },
{ "W",".--" },
{ "X","-..-" },
{ "Y","-.--" },
{ "Z","--.." },
{ "1",".----" },
{ "2","..---" },
{ "3","...--" },
{ "4","....-" },
{ "5","....." },
{ "6","-...." },
{ "7","--..." },
{ "8","---.." },
{ "9","----." },
{ "0","-----" },
{ " "," " },
};
//get filename from shell to read text from
string infilename;
if(argc > 1)
infilename = argv[1];
else
infilename = "text.txt";
//get filename from shell to write code to
string outfilename;
if(argc > 2)
outfilename = argv[2];
else
outfilename = "code.txt";
//read text from input file
string stext;
text.open(infilename);
//check if file openes successfully
if(!text)
return -1;
getline(text, stext);
text.close();
cout << stext << endl;
// convert string to upper case
for(auto & c: stext)
c = toupper(c);
cout << stext << endl;
//coder
string coded = "";
string temp;
for (auto & k : stext) {
temp = k;
coded += coder.find(temp)->second;
coded += " ";
}
cout << coded << endl;
//write coded to a file
text.open(outfilename, ios::out);
text << coded;
text.close();
return 0;
}