Source code for submission s817

Go to diff to previous submission

fs.c

  1. #include <stdio.h>
  2. #include <strings.h>
  3. #include <string.h>
  4.  
  5. char* fromMorse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "..--", ".-.-", "---.", "----"};
  6. char toMorse[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '_', ',', '.', '?'};
  7.  
  8. void s2m(char s, char *m);
  9. void m2s(char *m, int l, char *s);
  10.  
  11. int main()
  12. {
  13. while (1)
  14. {
  15. int lengths[2000];
  16. int lengthcounter = 0;
  17. char chars[5000];
  18. bzero(chars, 5000);
  19. char tmp[5000];
  20. char *stringin = tmp;
  21. bzero(stringin, 5000);
  22. char stringout[5000];
  23. bzero(stringout, 5000);
  24.  
  25. int ret = scanf("%s", stringin);
  26. if (ret == EOF)
  27. break;
  28. int l = strlen(stringin);
  29.  
  30. int i;
  31. for (i = 0; i < l; i++)
  32. {
  33. char m[4];
  34. bzero(m, 4);
  35. s2m(stringin[i], m);
  36. lengths[lengthcounter++] = strlen(m);
  37. strcat(chars, m);
  38. }
  39.  
  40. int counter = 0;
  41. for (i = 0; i < l; i++)
  42. {
  43. char s = '\0';
  44. int length = lengths[--lengthcounter];
  45. m2s(&chars[counter], length, &s);
  46. counter += length;
  47. stringout[i] = s;
  48. }
  49.  
  50. printf("%s\n", stringout);
  51. }
  52. return 0;
  53. }
  54.  
  55. void s2m(char s, char *m)
  56. {
  57. int i;
  58. for (i = 0; i < 30; i++)
  59. {
  60. if (s == toMorse[i])
  61. break;
  62. }
  63. strcpy(m, fromMorse[i]);
  64. }
  65.  
  66. void m2s(char *m, int l, char *s)
  67. {
  68. int i;
  69. for (i = 0; i < 30; i++)
  70. {
  71. if (strlen(fromMorse[i]) == l)
  72. {
  73. if (strncmp(fromMorse[i], m, l) == 0)
  74. {
  75. break;
  76. }
  77. }
  78. }
  79. *s = toMorse[i];
  80. }

Diff to submission s600

fs.c

--- c5.s600.cteam097.fs.c.0.fs.c
+++ c5.s817.cteam097.fs.c.0.fs.c
@@ -17,5 +17,6 @@
                                 char chars[5000];
                                 bzero(chars, 5000);
-                                char stringin[5000];
+                                char tmp[5000];
+                                char *stringin = tmp;
                                 bzero(stringin, 5000);
                                 char stringout[5000];
@@ -49,4 +50,5 @@
                                 printf("%s\n", stringout);
                 }
+                return 0;
 }