Source code for submission s535

fs.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. char in[2000];
  7. char out[2000];
  8. char len[2000];
  9. char mo[10000];
  10. char *morse[128];
  11. char ech[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_,.?";
  12. void im()
  13. {
  14. morse['A'] = ".-";
  15. morse['B'] = "-...";
  16. morse['C'] = "-.-.";
  17. morse['D'] = "-..";
  18. morse['E'] = ".";
  19. morse['F'] = "..-.";
  20. morse['G'] = "--.";
  21. morse['H'] = "....";
  22. morse['I'] = "..";
  23. morse['J'] = ".---";
  24. morse['K'] = "-.-";
  25. morse['L'] = ".-..";
  26. morse['M'] = "--";
  27. morse['N'] = "-.";
  28. morse['O'] = "---";
  29. morse['P'] = ".--.";
  30. morse['Q'] = "--.-";
  31. morse['R'] = ".-.";
  32. morse['S'] = "...";
  33. morse['T'] = "-";
  34. morse['U'] = "..-";
  35. morse['V'] = "...-";
  36. morse['W'] = ".--";
  37. morse['X'] = "-..-";
  38. morse['Y'] = "-.--";
  39. morse['Z'] = "--..";
  40. morse['_'] = "..--";
  41. morse[','] = ".-.-";
  42. morse['.'] = "---.";
  43. morse['?'] = "----";
  44. }
  45.  
  46. int main(int argc, char **argv)
  47. {
  48. int rv, i, tl, cl, j;
  49. char *op;
  50. im();
  51. while (1) {
  52. if (!gets(in)) break;
  53. tl = strlen(in);
  54. op = mo;
  55. for (i=0; i<tl; i++) {
  56. //printf("ch %c %p\n", in[i], morse[in[i]]);
  57. //puts(morse[in[i]]);
  58. cl = strlen(morse[in[i]]);
  59. strcpy(op, morse[in[i]]);
  60. op += cl;
  61. len[i] = cl;
  62. }
  63. out[tl] = 0;
  64. op = mo;
  65. for (i=0; i<tl; i++) {
  66. //printf("%d", len[i]);
  67. cl = len[tl-i-1];
  68. for (j=0; ech[j]; j++) {
  69. if (strlen(morse[ech[j]]) != cl) continue;
  70. if (strncmp(morse[ech[j]], op, cl)==0) break;
  71. }
  72. op += cl;
  73. out[i] = ech[j];
  74. }
  75. printf("%s\n", out);
  76. }
  77. return 0;
  78. }
  79.