Go to diff to previous submission
#include <iostream> #include <string> #include <cstdlib> #include <cstdio> #include <map> #include <cstring> #include <vector> using namespace std; map<char, string> znaky; void code(string &str, string &ret, vector<unsigned int> &cisla) { //vector<unsigned int> cisla; for (unsigned int i = 0; i<str.length(); i++) { ret.append(znaky[str.at(i)]); cisla.push_back(znaky[str.at(i)].length()); } //cout<<ret<<" " ; for(vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++) { //cout<<*i; } //cout<<endl; } void decode(string &str, string &ret, vector<unsigned int> &cisla) { unsigned int offset = 0; string kod; //for (vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++) for (vector<unsigned int>::iterator i = cisla.end()-1; ; i--) { kod = str.substr(offset, *i); ////cout<<kod<<endl; for(map<char, string>::iterator k = znaky.begin(); k != znaky.end(); k++) { ////cout << k->second << " == " << kod <<endl; if ((k->second).length()==kod.length()&&(k->second).compare(kod)==0) { //cout << k->second << " == " << kod <<endl; //cout<<" => Znak: "<<(k->first)<<endl; char tmp[2] = {(k->first), '\0'}; ret.append(tmp); break; } } //kod.empty(); offset+=*i; if (i == cisla.begin()) break; } //cout<<ret<<endl; } int main () { unsigned long n, x, y, pocet; n = x = y = pocet = 0; string input;/* strcpy(znaky['A'], ".-"); strcpy(znaky['B'], "-..."); strcpy(znaky['C'], "-.-."); strcpy(znaky['D'], "-.."); strcpy(znaky['E'], "."); strcpy(znaky['F'], "..-."); strcpy(znaky['G'], "--."); strcpy(znaky['H'], "...."); strcpy(znaky['I'], ".."); strcpy(znaky['J'], ".---"); strcpy(znaky['K'], "-.-"); strcpy(znaky['L'], ".-.."); strcpy(znaky['M'], "--"); strcpy(znaky['N'], "-."); strcpy(znaky['O'], "---"); strcpy(znaky['P'], ".--."); strcpy(znaky['Q'], "--.-"); strcpy(znaky['R'], ".-."); strcpy(znaky['S'], "..."); strcpy(znaky['T'], "..."); strcpy(znaky['U'], "..-"); strcpy(znaky['V'], "...-"); strcpy(znaky['W'], ".--"); strcpy(znaky['X'], "-..-"); strcpy(znaky['Y'], "-.--"); strcpy(znaky['Z'], "--.."); strcpy(znaky['_'], "..--"); strcpy(znaky['.'], "---."); strcpy(znaky[','], ".-.-"); strcpy(znaky['?'], "----"); */ znaky['A']= string(".-"); znaky['B']= string("-..."); znaky['C']= string("-.-."); znaky['D']= string("-.."); znaky['E']= string("."); znaky['F']= string("..-."); znaky['G']= string("--."); znaky['H']= string("...."); znaky['I']= string(".."); znaky['J']= string(".---"); znaky['K']= string("-.-"); znaky['L']= string(".-.."); znaky['M']= string("--"); znaky['N']= string("-."); znaky['O']= string("---"); znaky['P']= string(".--."); znaky['Q']= string("--.-"); znaky['R']= string(".-."); znaky['S']= string("..."); znaky['T']= string("-"); znaky['U']= string("..-"); znaky['V']= string("...-"); znaky['W']= string(".--"); znaky['X']= string("-..-"); znaky['Y']= string("-.--"); znaky['Z']= string("--.."); znaky['_']= string("..--"); znaky['.']= string("---."); znaky[',']= string(".-.-"); znaky['?']= string("----"); string ret; string ret2; vector<unsigned int> cisla; while (cin) { cin >> input; if (input.empty()) break; code(input, ret, cisla); decode(ret, ret2, cisla); ret.clear(); cout<<ret2<<endl; ret2.clear(); cisla.clear(); input.clear(); } return 0; }
--- c5.s787.cteam016.fs.cpp.0.fs.cpp +++ c5.s803.cteam016.fs.cpp.0.fs.cpp @@ -129,4 +129,5 @@ { cin >> input; + if (input.empty()) break; code(input, ret, cisla); @@ -137,4 +138,5 @@ cisla.clear(); + input.clear(); }