Guest User

Untitled

a guest
Nov 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <stdio.h>
  5. using namespace std;
  6.  
  7. struct lletra {
  8. int x, y, cops;
  9. char digit;
  10.  
  11. lletra(int x, int y, int cops, char c) {
  12. this -> x = x;
  13. this -> y = y;
  14. this -> cops = cops;
  15. this -> digit = c;
  16. }
  17.  
  18. lletra buscar_coordenada(char c) {
  19. switch (c)
  20. {
  21. case 'a': return lletra(0, 1, 1, '2'); break;
  22. case 'b': return lletra(0, 1, 2, '2'); break;
  23. case 'c': return lletra(0, 1, 3, '2'); break;
  24. case 'd': return lletra(0, 2, 1, '3'); break;
  25. case 'e': return lletra(0, 2, 2, '3'); break;
  26. case 'f': return lletra(0, 2, 3, '3'); break;
  27. case 'g': return lletra(1, 0, 1, '4'); break;
  28. case 'h': return lletra(1, 0, 2, '4'); break;
  29. case 'i': return lletra(1, 0, 3, '4'); break;
  30. case 'j': return lletra(1, 1, 1, '5'); break;
  31. case 'k': return lletra(1, 1, 2, '5'); break;
  32. case 'l': return lletra(1, 1, 3, '5'); break;
  33. case 'm': return lletra(1, 2, 1, '6'); break;
  34. case 'n': return lletra(1, 2, 2, '6'); break;
  35. case 'o': return lletra(1, 2, 3, '6'); break;
  36. case 'p': return lletra(2, 0, 1, '7'); break;
  37. case 'q': return lletra(2, 0, 2, '7'); break;
  38. case 'r': return lletra(2, 0, 3, '7'); break;
  39. case 's': return lletra(2, 0, 4, '7'); break;
  40. case 't': return lletra(2, 1, 1, '8'); break;
  41. case 'u': return lletra(2, 1, 2, '8'); break;
  42. case 'v': return lletra(2, 1, 3, '8'); break;
  43. case 'w': return lletra(2, 2, 1, '9'); break;
  44. case 'x': return lletra(2, 2, 2, '9'); break;
  45. case 'y': return lletra(2, 2, 3, '9'); break;
  46. case 'z': return lletra(2, 2, 4, '9'); break;
  47. case ' ': return lletra(3, 1, 1, '0'); break;
  48. case '#': return lletra(3, 2, 1, '#'); break;
  49. case '1': return lletra(0, 0, 1, '1'); break;
  50. case '2': return lletra(0, 1, 4, '2'); break;
  51. case '3': return lletra(0, 2, 4, '3'); break;
  52. case '4': return lletra(1, 0, 4, '4'); break;
  53. case '5': return lletra(1, 1, 4, '5'); break;
  54. case '6': return lletra(1, 2, 4, '6'); break;
  55. case '7': return lletra(2, 0, 5, '7'); break;
  56. case '8': return lletra(2, 1, 4, '8'); break;
  57. case '9': return lletra(2, 2, 5, '9'); break;
  58. case '0': return lletra(3, 1, 2, '0'); break;
  59. default: return lletra(0, 0, 0, ' '); break;
  60. }
  61. }
  62.  
  63. lletra(char c)
  64. {
  65. lletra nova = this -> buscar_coordenada(c);
  66. this -> x = nova.x;
  67. this -> y = nova.y;
  68. this -> cops = nova.cops;
  69. this -> digit = nova.digit;
  70. }
  71.  
  72. };
  73.  
  74. bool blok_mayus = false;
  75.  
  76.  
  77. void eliminar_espais(string& s) {
  78. for (int i=0; i<s.size();) {
  79. if (s[i] == ' ' and (i == 0 or s[i-1] == ' ')) {
  80. s.erase(i, 1);
  81. } else ++i;
  82. }
  83. }
  84.  
  85. void eliminar_merda(string& s)
  86. {
  87. for (int i=0; i<s.size();) {
  88. char c = s[i];
  89. bool especial = c >= 'A' and c <= 'Z';
  90. especial = especial || c >= 'a' and c <= 'z';
  91. especial = especial || c >= '0' and c <= '9';
  92. especial = especial || c == ' ';
  93. if (!especial) {
  94. s.erase(i, 1);
  95. } else ++i;
  96. }
  97. }
  98.  
  99. void canviar_paraula(string& frase, const string str1, const string str2) {
  100. int aux = 0;
  101. while ((aux = frase.find(str1)) != -1) {
  102. frase.replace(aux, str1.size(), str2);
  103. }
  104. }
  105.  
  106. void separar_paraules(vector<string>& paraules, string& l) {
  107. canviar_paraula(l, "que tal", "ktal");
  108. canviar_paraula(l, "que carajo", "wtf");
  109. canviar_paraula(l, "que", "k");
  110. canviar_paraula(l, "adios", "dw");
  111. canviar_paraula(l, "te quiero mucho", "tkm");
  112. canviar_paraula(l, "gracias", "thx");
  113. canviar_paraula(l, "besos y abrazos", "xoxo");
  114.  
  115. string aux = "";
  116. for (int i=0; i<l.size(); ++i) {
  117. if (l[i] == ' ') {
  118. paraules.push_back(aux);
  119. aux = "";
  120. } else aux += l[i];
  121. }
  122. paraules.push_back(aux);
  123. }
  124.  
  125. void cami_letra2lletra(lletra& inici, const lletra& fi)
  126. {
  127. while (inici.x > fi.x)
  128. {
  129. cout << "arriba ";
  130. inici.x--;
  131. }
  132. while (inici.x < fi.x)
  133. {
  134. cout << "abajo ";
  135. inici.x++;
  136. }
  137. while (inici.y > fi.y)
  138. {
  139. cout << "izquierda ";
  140. inici.y--;
  141. }
  142. while (inici.y < fi.y)
  143. {
  144. cout << "derecha ";
  145. inici.y++;
  146. }
  147.  
  148.  
  149. for (int i = 0; i < fi.cops; ++i)
  150. {
  151. cout << fi.digit;
  152. }
  153. cout << ' ';
  154. inici = fi;
  155. }
  156.  
  157. void escriure_paraula(const string& s, lletra& inici) {
  158. for(int i =0; i < s.size(); ++i) {
  159. if (s[i] >= 'A' and s[i] <= 'Z')
  160. {
  161. //Quan majuscula
  162. if (!blok_mayus){
  163. blok_mayus = true;
  164. cami_letra2lletra(inici, lletra('#'));
  165. }
  166. cami_letra2lletra(inici, lletra(s[i]-'A'+'a'));
  167. }
  168. else
  169. {
  170. //Quan minuscula
  171. if (blok_mayus){
  172. blok_mayus = false;
  173. cami_letra2lletra(inici, lletra('#'));
  174. }
  175. cami_letra2lletra(inici, lletra(s[i]));
  176. }
  177. }
  178. }
  179.  
  180. int main() {
  181. int n, i = 1;
  182. cin >> n;
  183. string line;
  184. while (getchar() != '\n');
  185. while (i <= n) {
  186. vector<string> paraules;
  187. getline(cin, line);
  188. eliminar_espais(line);
  189. eliminar_merda (line);
  190. separar_paraules(paraules, line);
  191.  
  192. cout << "Case #" << i << ':';
  193. lletra actual('#');
  194. for (int j=0; j<paraules.size(); ++j) {
  195. escriure_paraula(paraules[j], actual);
  196. if (j != paraules.size()-1)cami_letra2lletra(actual, lletra(' '));
  197. }
  198. cout << endl;
  199. ++i;
  200. }
  201. }
Add Comment
Please, Sign In to add comment