Source code for submission s600

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 stringin[5000];
  20. bzero(stringin, 5000);
  21. char stringout[5000];
  22. bzero(stringout, 5000);
  23.  
  24. int ret = scanf("%s", stringin);
  25. if (ret == EOF)
  26. break;
  27. int l = strlen(stringin);
  28.  
  29. int i;
  30. for (i = 0; i < l; i++)
  31. {
  32. char m[4];
  33. bzero(m, 4);
  34. s2m(stringin[i], m);
  35. lengths[lengthcounter++] = strlen(m);
  36. strcat(chars, m);
  37. }
  38.  
  39. int counter = 0;
  40. for (i = 0; i < l; i++)
  41. {
  42. char s = '\0';
  43. int length = lengths[--lengthcounter];
  44. m2s(&chars[counter], length, &s);
  45. counter += length;
  46. stringout[i] = s;
  47. }
  48.  
  49. printf("%s\n", stringout);
  50. }
  51. }
  52.  
  53. void s2m(char s, char *m)
  54. {
  55. int i;
  56. for (i = 0; i < 30; i++)
  57. {
  58. if (s == toMorse[i])
  59. break;
  60. }
  61. strcpy(m, fromMorse[i]);
  62. }
  63.  
  64. void m2s(char *m, int l, char *s)
  65. {
  66. int i;
  67. for (i = 0; i < 30; i++)
  68. {
  69. if (strlen(fromMorse[i]) == l)
  70. {
  71. if (strncmp(fromMorse[i], m, l) == 0)
  72. {
  73. break;
  74. }
  75. }
  76. }
  77. *s = toMorse[i];
  78. }

Diff to submission s573

fs.c

--- c5.s573.cteam097.fs.c.0.fs.c
+++ c5.s600.cteam097.fs.c.0.fs.c
@@ -11,34 +11,42 @@
 int main()
 {
-                int lengths[2000];
-                int lengthcounter = 0;
-                char chars[5000];
-                char stringin[5000];
-                char stringout[5000];
-                
-                scanf("%s", stringin);
-                int l = strlen(stringin);
-                
-                int i;
-                for (i = 0; i < l; i++)
-                {
-                                char m[4];
-                                bzero(m, 4);
-                                s2m(stringin[i], m);
-                                lengths[lengthcounter++] = strlen(m);
-                                strcat(chars, m);
-                }
-                
-                int counter = 0;
-                for (i = 0; i < l; i++)
+                while (1)
                 {
-                                char s = '\0';
-                                int length = lengths[--lengthcounter];
-                                m2s(&chars[counter], length, &s);
-                                counter += length;
-                                stringout[i] = s;
+                                int lengths[2000];
+                                int lengthcounter = 0;
+                                char chars[5000];
+                                bzero(chars, 5000);
+                                char stringin[5000];
+                                bzero(stringin, 5000);
+                                char stringout[5000];
+                                bzero(stringout, 5000);
+                                
+                                int ret = scanf("%s", stringin);
+                                if (ret == EOF)
+                                                break;
+                                int l = strlen(stringin);
+                                
+                                int i;
+                                for (i = 0; i < l; i++)
+                                {
+                                                char m[4];
+                                                bzero(m, 4);
+                                                s2m(stringin[i], m);
+                                                lengths[lengthcounter++] = strlen(m);
+                                                strcat(chars, m);
+                                }
+                                
+                                int counter = 0;
+                                for (i = 0; i < l; i++)
+                                {
+                                                char s = '\0';
+                                                int length = lengths[--lengthcounter];
+                                                m2s(&chars[counter], length, &s);
+                                                counter += length;
+                                                stringout[i] = s;
+                                }
+                                
+                                printf("%s\n", stringout);
                 }
-                
-                printf("%s\n", stringout);
 }