Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <sstream>
- #include <map>
- class initialization
- {
- private:
- int amount, highestCount;
- std::string brailleLine, str[3];
- public:
- std::string readLinesFromText(char *file[]);
- void setAmountOfLines(char *file[]);
- int returnAmount() { return amount; }
- void populateTempCharArr(std::string tempStr1);
- int returnHighestCount(){ return highestCount; }
- };
- class brailleReading : public initialization
- {
- private:
- std::map<int, std::string> numSequence;
- public:
- void populateMemoryCharacterMap();
- int stringToNumber(std::string tempString);
- std::string translateBrailleToEnglish(std::string tempPassStr);
- void initiateTranslation(std::string input);
- };
- void initialization::setAmountOfLines(char *file[])
- {
- std::string line;
- std::ifstream myFile;
- int count = 0, iterator = 0;
- myFile.open(file[1]);
- if(myFile.is_open())
- {
- while(myFile.good())
- {
- getline(myFile, line);
- for( ; iterator < 3; iterator++)
- str[iterator] = line;
- ++count;
- }
- myFile.close();
- }
- else
- std::cout << "Unable to open file\n";
- amount = count - 1;
- }
- std::string initialization::readLinesFromText(char *file[])
- {
- std::ifstream brailleFile;
- int iterator = 0;
- std::string tempStr, tempStr2;
- std::ostringstream stringStream;
- brailleFile.open(file[1]);
- if(brailleFile.is_open())
- {
- while(brailleFile.good())
- {
- getline(brailleFile, brailleLine, '\0');
- stringStream << brailleLine;
- tempStr += stringStream.str();
- }
- while(iterator < tempStr.length())
- {
- if((tempStr[iterator] == ' ') || (tempStr[iterator] == '.'))
- tempStr2 += tempStr[iterator];
- ++iterator;
- }
- brailleFile.close();
- }
- else
- std::cout << "Unable to open file\n";
- return tempStr2;
- }
- void brailleReading::populateMemoryCharacterMap()
- {
- numSequence[1] = "a";
- numSequence[2] = "b";
- numSequence[14] = "c";
- numSequence[145] = "d";
- numSequence[15] = "e";
- numSequence[124] = "f";
- numSequence[1245] = "g";
- numSequence[125] = "h";
- numSequence[24] = "i";
- numSequence[245] = "j";
- numSequence[13] = "k";
- numSequence[123] = "l";
- numSequence[134] = "m";
- numSequence[1345] = "n";
- numSequence[135] = "o";
- numSequence[1234] = "p";
- numSequence[12345] = "q";
- numSequence[1235] = "r";
- numSequence[234] = "s";
- numSequence[2345] = "t";
- numSequence[136] = "u";
- numSequence[1236] = "v";
- numSequence[2456] = "w";
- numSequence[1346] = "x";
- numSequence[13456] = "y";
- numSequence[1356] = "z";
- }
- int brailleReading::stringToNumber(std::string tempString)
- {
- int result;
- std::stringstream convert(tempString);
- if( !(convert >> result) )
- result = 0;
- return result;
- }
- std::string brailleReading::translateBrailleToEnglish(std::string tempPassStr)
- {
- int key = 0;
- populateMemoryCharacterMap();
- key = stringToNumber(tempPassStr);
- for( std::map<int, std::string>::iterator intIter = numSequence.begin(); intIter != numSequence.end(); ++intIter )
- {
- if( (*intIter).first == key )
- return (*intIter).second;
- }
- }
- void brailleReading::initiateTranslation(std::string input)
- {
- //starting positions for first braille character
- int letter1 = 0, letter2 = input.length() / 3, letter3 = letter2 * 2, letter4 = 1, letter5 = letter2 + 1, letter6 = letter3 + 1;
- std::string numberSeq = "\0";
- while( letter1 <= input.length() / 3 )
- {
- if(input[letter1] == '.')
- numberSeq = numberSeq + '1';
- if(input[letter2] == '.')
- numberSeq = numberSeq + '2';
- if(input[letter3] == '.')
- numberSeq = numberSeq + '3';
- if(input[letter4] == '.')
- numberSeq = numberSeq + '4';
- if(input[letter5] == '.')
- numberSeq = numberSeq + '5';
- if(input[letter6] == '.')
- numberSeq = numberSeq + '6';
- letter1 += 3;
- letter2 += 3;
- letter3 += 3;
- letter4 = letter1 + 1;
- letter5 = letter2 + 1;
- letter6 = letter3 + 1;
- if(numberSeq == "\0")
- std::cout << ' '; //this will check for spaces and add them
- else
- std::cout << translateBrailleToEnglish(numberSeq);
- numberSeq = "\0";
- }
- }
- int main(int argc, char *argv[])
- {
- brailleReading rayCharles;
- rayCharles.setAmountOfLines(argv);
- rayCharles.initiateTranslation( rayCharles.readLinesFromText(argv) );
- std::cout << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement