Source code for submission s772

fs.c

  1. #include <stdio.h>
  2. #include <strings.h>
  3.  
  4. char alphabet[40] = " ETIANMSURWDKGOHVF_L,PJBXCYZQ.?";
  5. char morses[40][4] = {"@", ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
  6. "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.",
  7. "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--",
  8. "--..", "..--", ".-.-", "---.", "----"};
  9. int morse_lens[40] = {0,2,4,4,3,1,4,3,4,2,4,3,4,2,2,3,4,4,3,3,1,3,4,3,4,4,4,4,4,4,4};
  10.  
  11. int main() {
  12. char input[1000];
  13. char morse[4000];
  14. int numbers[1000];
  15. while(1) {
  16. scanf("%s\n", input);
  17. char c;
  18. int i = 0;
  19. int morse_len = 0;
  20. while(1){
  21. c = input[i];
  22. if(c == 0) break;
  23. else if(c == 95) c = 91;
  24. else if(c == 44) c = 92;
  25. else if(c == 46) c = 93;
  26. else if(c == 63) c = 94;
  27. c -= 64;
  28. strcpy(&morse[morse_len], morses[c]);
  29. morse_len += morse_lens[(int)c];
  30. numbers[i] = morse_lens[(int)c];
  31. i++;
  32. }
  33. morse[morse_len+1] = 0;
  34. printf("\n%s\n", morse);
  35. i--;
  36. int j;
  37. int morse_ptr = 0;
  38. for(; i >= 0; i--){
  39. c = 0;
  40. for(j=0; j<numbers[i]; j++) {
  41. c *= 2;
  42. if(morse[morse_ptr] == '.'){
  43. c += 1;
  44. }else {
  45. c += 2;
  46. }
  47. morse_ptr++;
  48. }
  49. printf("%c", alphabet[c]);
  50. }
  51. printf("\n");
  52. if(feof(stdin)) break;
  53. }
  54. }
  55.  
  56.