Source code for submission s674

fs.cpp

  1. #include <cstdio>
  2. #include <queue>
  3. #include <stack>
  4. #include <cstdlib>
  5. #include <algorithm>
  6. #include <iostream>
  7. #include <cstring>
  8. using namespace std;
  9.  
  10. string radek;
  11. int CISLO;
  12.  
  13. /**
  14. boool Je()
  15. {
  16.   if(radek == "." || radek == "-")
  17.   {
  18.   CISLO = 1;
  19.   return true;
  20.   }
  21.   else if(radek == ".-" || radek == ".." || radek == "--" || radek == "-.")
  22.   {
  23.   CISLO = 2;
  24.   return true;
  25.   }
  26.   if(radek == "--." || radek == "--." || radek == "-.-" || radek == "---" || radek == ".-." || radek == "..." || radek == "..-" || radek == ".--")
  27.   {
  28.   CISLO = 3;
  29.   return true;
  30.   }
  31.   if(radek == "-..." || radek == "-.-." || radek == "..-." || radek == "...." || radek == ".---" || radek == ".-.." || radek == ".--." || radek == "...-" || radek == "-..-" || radek == "-.--" || radek == "--..")
  32.   {
  33.   CISLO = 4;
  34.   return true;
  35.   }
  36.   if(radek == "..--" || radek == ".-.-" || radek == "---." || radek == "----")
  37.   {
  38.   CISLO = 4;
  39.   return true;
  40.   }
  41. }
  42. **/
  43.  
  44. int Cislo(char znak)
  45. {
  46. //printf(" ... Cislo(%c)\n", znak);
  47. if(znak == 'A')
  48. {
  49. radek = ".-";
  50. return radek.length();
  51. }
  52. if(znak == 'B')
  53. {
  54. radek = "-...";
  55. return radek.length();
  56. }
  57. if(znak == 'C')
  58. {
  59. radek = "-.-.";
  60. return radek.length();
  61. }
  62. if(znak == 'D')
  63. {
  64. radek = "-..";
  65. return radek.length();
  66. }
  67. if(znak == 'E')
  68. {
  69. radek = ".";
  70. return radek.length();
  71. }
  72. if(znak == 'F')
  73. {
  74. radek = "..-.";
  75. return radek.length();
  76. }
  77. if(znak == 'G')
  78. {
  79. radek = "--.";
  80. return radek.length();
  81. }
  82. if(znak == 'H')
  83. {
  84. radek = "....";
  85. return radek.length();
  86. }
  87. if(znak == 'I')
  88. {
  89. radek = "..";
  90. return radek.length();
  91. }
  92. if(znak == 'J')
  93. {
  94. radek = ".---";
  95. return radek.length();
  96. }
  97. if(znak == 'K')
  98. {
  99. radek = "-.-";
  100. return radek.length();
  101. }
  102. if(znak == 'L')
  103. {
  104. radek = ".-..";
  105. return radek.length();
  106. }
  107. if(znak == 'M')
  108. {
  109. radek = "--";
  110. return radek.length();
  111. }
  112. if(znak == 'N')
  113. {
  114. radek = "-.";
  115. return radek.length();
  116. }
  117. if(znak == 'O')
  118. {
  119. radek = "---";
  120. return radek.length();
  121. }
  122. if(znak == 'P')
  123. {
  124. radek = ".--.";
  125. return radek.length();
  126. }
  127. if(znak == 'Q')
  128. {
  129. radek = "--.-";
  130. return radek.length();
  131. }
  132. if(znak == 'R')
  133. {
  134. radek = ".-.";
  135. return radek.length();
  136. }
  137. if(znak == 'S')
  138. {
  139. radek = "...";
  140. return radek.length();
  141. }
  142. if(znak == 'T')
  143. {
  144. radek = "-";
  145. return radek.length();
  146. }
  147. if(znak == 'U')
  148. {
  149. radek = "..-";
  150. return radek.length();
  151. }
  152. if(znak == 'V')
  153. {
  154. radek = "...-";
  155. return radek.length();
  156. }
  157. if(znak == 'W')
  158. {
  159. radek = ".--";
  160. return radek.length();
  161. }
  162. if(znak == 'X')
  163. {
  164. radek = "-..-";
  165. return radek.length();
  166. }
  167. if(znak == 'Y')
  168. {
  169. radek = "-.--";
  170. return radek.length();
  171. }
  172. if(znak == 'Z')
  173. {
  174. radek = "--..";
  175. return radek.length();
  176. }
  177. if(znak == '_')
  178. {
  179. radek = "..--";
  180. return radek.length();
  181. }
  182. if(znak == ',')
  183. {
  184. radek = ".-.-";
  185. return radek.length();
  186. }
  187. if(znak == '.')
  188. {
  189. radek = "---.";
  190. return radek.length();
  191. }
  192. if(znak == '?')
  193. {
  194. radek = "----";
  195. return radek.length();
  196. }
  197. }
  198.  
  199. char Znak()
  200. {
  201. if(radek == ".-")
  202. {
  203. return 'A';
  204. }
  205. if(radek == "-...")
  206. {
  207. return 'B';
  208. }
  209. if(radek == "-.-.")
  210. {
  211. return 'C';
  212. }
  213. if(radek == "-..")
  214. {
  215. return 'D';
  216. }
  217. if(radek == ".")
  218. {
  219. return 'E';
  220. }
  221. if(radek == "..-.")
  222. {
  223. return 'F';
  224. }
  225. if(radek == "--.")
  226. {
  227. return 'G';
  228. }
  229. if(radek == "....")
  230. {
  231. return 'H';
  232. }
  233. if(radek == "..")
  234. {
  235. return 'I';
  236. }
  237. if(radek == ".---")
  238. {
  239. return 'J';
  240. }
  241. if(radek == "-.-")
  242. {
  243. return 'K';
  244. }
  245. if(radek == ".-..")
  246. {
  247. return 'L';
  248. }
  249. if(radek == "--")
  250. {
  251. return 'M';
  252. }
  253. if(radek == "-.")
  254. {
  255. return 'N';
  256. }
  257. if(radek == "---")
  258. {
  259. return 'O';
  260. }
  261. if(radek == ".--.")
  262. {
  263. return 'P';
  264. }
  265. if(radek == "--.-")
  266. {
  267. return 'Q';
  268. }
  269. if(radek == ".-.")
  270. {
  271. return 'R';
  272. }
  273. if(radek == "...")
  274. {
  275. return 'S';
  276. }
  277. if(radek == "-")
  278. {
  279. return 'T';
  280. }
  281. if(radek == "..-")
  282. {
  283. return 'U';
  284. }
  285. if(radek == "...-")
  286. {
  287. return 'V';
  288. }
  289. if(radek == ".--")
  290. {
  291. return 'W';
  292. }
  293. if(radek == "-..-")
  294. {
  295. return 'X';
  296. }
  297. if(radek == "-.--")
  298. {
  299. return 'Y';
  300. }
  301. if(radek == "--..")
  302. {
  303. return 'Z';
  304. }
  305. if(radek == "..--")
  306. {
  307. return '_';
  308. }
  309. if(radek == ".-.-")
  310. {
  311. return ',';
  312. }
  313. if(radek == "---.")
  314. {
  315. return '.';
  316. }
  317. if(radek == "----")
  318. {
  319. return '?';
  320. }
  321. }
  322.  
  323. int main()
  324. {
  325. char znak;
  326. int cislo;
  327. queue<char> znaky;
  328. stack<int> cisla;
  329. while((znak = getchar()) != EOF) // EOF
  330. {
  331. if(znak == '\n')
  332. {
  333. // VYPIS
  334. radek = "";
  335. while(!znaky.empty())
  336. {
  337. radek = "";
  338. //printf("cislo = %d, radek = ", cislo);
  339. for(int i=0; i<cisla.top(); i++)
  340. {
  341. radek = radek+znaky.front();
  342. //putchar(znaky.front()); // vypis
  343. znaky.pop();
  344. }
  345. //printf(" (length = %d) \n", radek.length());
  346. putchar(Znak());
  347. cisla.pop();
  348. }
  349. printf("\n");
  350. }
  351. else // nacitani
  352. {
  353. cislo = Cislo(znak);
  354. for(int i=0; i<radek.length(); i++)
  355. {
  356. znaky.push(radek[i]);
  357. }
  358. cisla.push(cislo);
  359. }
  360. }
  361.  
  362.  
  363. /**
  364.   //printf("\n");
  365.   while(!znaky.empty())
  366.   {
  367.   putchar(znaky.front());
  368.   znaky.pop();
  369.   }
  370.   printf("\n");
  371.   while(!cisla.empty())
  372.   {
  373.   printf("%d", cisla.top());
  374.   cisla.pop();
  375.   }
  376.   return 0;
  377.   **/
  378.  
  379.  
  380.  
  381. return 0;
  382. }
  383.