Go to diff to previous submission
/* * File: fs.c * Author: cteam048 * * Created on October 19, 2013, 12:45 PM */ #include <iostream> #include <string> #include <stack> using namespace std; class M { public: string code; int len; M(string fcode, int flen); }; M::M(string fcode1, int flen1) { code = fcode1; len = flen1; } M *CharToMorse(char znak) { if (znak == 'A') return new M(".-", 2); if (znak == 'B') return new M("-...", 4); if (znak == 'C') return new M("-.-.", 4); if (znak == 'D') return new M("-..", 3); if (znak == 'E') return new M(".", 1); if (znak == 'F') return new M("..-.", 4); if (znak == 'G') return new M("--.", 3); if (znak == 'H') return new M("....", 4); if (znak == 'I') return new M("..", 2); if (znak == 'J') return new M(".---", 4); if (znak == 'K') return new M("-.-", 3); if (znak == 'L') return new M(".-..", 4); if (znak == 'M') return new M("--", 2); if (znak == 'N') return new M("-.", 2); if (znak == 'O') return new M("---", 3); if (znak == 'P') return new M(".--.", 4); if (znak=='Q') return new M("--.-", 4); if (znak == 'R') return new M(".-.", 3); if (znak == 'S') return new M("...", 3); if (znak == 'T') return new M("-", 1); if (znak == 'U') return new M("..-", 3); if (znak == 'V') return new M("...-", 4); if (znak == 'W') return new M(".--", 3); if (znak == 'X') return new M("-..-", 4); if (znak == 'Y') return new M("-.--", 4); if (znak == 'Z') return new M("--..", 4); if (znak == '_') return new M("..--", 4); if (znak == ',') return new M(".-.-", 4); if (znak == '.') return new M("---.", 4); if (znak == '?') return new M("----", 4); return NULL; }; string MorseToChar(string znak) { if (znak == ".-") return "A"; if (znak == "-...") return "B"; if (znak == "-.-.") return "C"; if (znak == "-..") return "D"; if (znak == ".") return "E"; if (znak == "..-.")return "F"; if (znak == "--.")return "G"; if (znak == "....")return "H"; if (znak == "..")return "I"; if (znak == ".---")return "J"; if (znak == "-.-")return "K"; if (znak == ".-..")return "L"; if (znak == "--")return "M"; if (znak == "-.")return "N"; if (znak == "---")return "O"; if (znak == ".--.")return "P"; if (znak == "--.-")return "Q"; if (znak == ".-.")return "R"; if (znak == "...")return "S"; if (znak == "-")return "T"; if (znak == "..-")return "U"; if (znak == "...-")return "V"; if (znak == ".--")return "W"; if (znak == "-..-")return "X"; if (znak == "-.--")return "Y"; if (znak == "--..")return "Z"; if (znak == "..--")return "_"; if (znak == ".-.-")return ","; if (znak == "---.")return "."; if (znak == "----")return "?"; return NULL; }; int main() { string line; string morse; stack<int> cisla; while (cin >> line ) { for (unsigned int i = 0; i < line.size(); i++) { M *z = CharToMorse(line[i]); morse += z->code; cisla.push(z->len); } /**-----*/ string vysledek; unsigned int c = 0; while (!cisla.empty()){ string znak; int laz = cisla.top(); for (int i = 0; i < laz; i++) { znak +=morse[c]; c++; } cout << znak<< endl; vysledek+=MorseToChar(znak); cisla.pop(); } cout << vysledek << endl; } /*********/ /*********/ return 0; }
--- c5.s1072.cteam048.fs.cpp.0.fs.cpp +++ c5.s1122.cteam048.fs.cpp.0.fs.cpp @@ -113,12 +113,13 @@ unsigned int c = 0; - while (c< morse.size()){ + while (!cisla.empty()){ string znak; int laz = cisla.top(); - for (int i = 0; i < laz; ++i) { + for (int i = 0; i < laz; i++) { znak +=morse[c]; c++; } + cout << znak<< endl; vysledek+=MorseToChar(znak); cisla.pop();