Advertisement
nocturnalmk

morse

Aug 27th, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.31 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DASH 1
  4. #define DOT  2
  5. #define END  3
  6.  
  7. int map[26][5] = {
  8.     {DOT,    DASH,   END},                  // A
  9.     {DASH,   DOT,    DOT,    DOT,    END},  // B
  10.     {DASH,   DOT,    DASH,   DOT,    END},  // C
  11.     {DASH,   DOT,    DOT,    END        },  // D
  12.     {DOT,    END                        },  // E
  13.     {DOT,    DOT,    DASH,   DOT,    END},  // F
  14.     {DASH,   DASH,   DOT,    END        },  // G
  15.     {DOT,    DOT,    DOT,    DOT,    END},  // H
  16.     {DOT,    DOT,    END                },  // I
  17.     {DOT,    DASH,   DASH,   DASH,   END},  // J
  18.     {DASH,   DOT,    DASH,   END        },  // K
  19.     {DOT,    DASH,   DOT,    DOT,    END},  // L
  20.     {DASH,   DASH,   END                },  // M
  21.     {DASH,   DOT,    END                },  // N
  22.     {DASH,   DASH,   DASH,   END        },  // O
  23.     {DOT,    DASH,   DASH,   DOT,    END},  // P
  24.     {DASH,   DASH,   DOT,    DASH,   END},  // Q
  25.     {DOT,    DASH,   DOT,    END        },  // R
  26.     {DOT,    DOT,    DOT,    END        },  // S
  27.     {DASH,   END                        },  // T
  28.     {DOT,    DOT,    DASH,   END        },  // U
  29.     {DOT,    DOT,    DOT,    DASH,   END},  // V
  30.     {DOT,    DASH,   DASH,   END        },  // W
  31.     {DASH,   DOT,    DOT,    DASH,   END},  // X
  32.     {DASH,   DOT,    DASH,   DASH,   END},  // Y
  33.     {DASH,   DASH,   DOT,    DOT,    END}   // Z
  34. };
  35.  
  36. void printToMorse(char* text) {
  37.    
  38.     char k;
  39.     int i = 0;
  40.     while ((k = *(text+i)) != '\0') {
  41.        
  42.         if (k == ' ') {
  43.             printf("\t");
  44.             i++;
  45.             continue;
  46.         }
  47.        
  48.         if (isalnum(k) == 0) {
  49.             i++;
  50.             continue;
  51.         }
  52.        
  53.         k = toupper(k);
  54.         int letterIndex = (int) k - 65;
  55.        
  56.         int j = 0;
  57.         while (1) {
  58.             int bit = map[letterIndex][j];
  59.             if (bit == DASH) {
  60.                 printf("-");
  61.             }
  62.             if (bit == DOT) {
  63.                 printf(".");
  64.             }
  65.             if (bit == END) {
  66.                 break;
  67.             }
  68.            
  69.             j++;
  70.         }
  71.        
  72.         printf("  ");
  73.        
  74.         i++;
  75.     }
  76.  
  77.     printf("\n");
  78. }
  79.  
  80. int main()
  81. {
  82.    
  83.     char tekst[] = "Hello world!";
  84.     printToMorse(tekst);
  85.  
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement