Guest User

Untitled

a guest
Oct 10th, 2026
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 65535
  5.  
  6.  
  7. void m2e(char[], int);
  8. void e2m(char[], int);
  9.  
  10. int main(){
  11.  
  12.     unsigned char string[MAX];
  13.     unsigned char c, d;
  14.     int i;
  15.  
  16.     printf("EMC(English Morse Converter.) By 3issam\n\t-Send 1 for English to Morse\n\t-Send 2 for Morse to English\n\t-Send h for help\n\t-Send e to quit\n\n");
  17.  
  18.     for(c = 0; c != EOF;){
  19.         printf("~\\");
  20.         c = getchar();
  21.         switch(c){
  22.             case '1':
  23.                 getchar();
  24.                 printf("\nEnter the English text:\n\n-->");
  25.                 for(d = i = 0; (d = getchar()) != EOF && d != '\n' && i < MAX; i++)
  26.                     string[i] = d;
  27.                 string[i] = 0;
  28.                 printf("==>"); e2m(string, i); putchar('\n');
  29.                 break;
  30.             case '2':
  31.                 getchar();
  32.                 printf("\nEnter the Morse text:\n\n-->");
  33.                 for(d = i = 0; (d = getchar()) != EOF && d != '\n' && i < MAX; i++)
  34.                     string[i] = d;
  35.                 string[i] = 0;
  36.                 printf("==>"); m2e(string, i); putchar('\n');
  37.                 break;
  38.             case 'h':
  39.                 getchar();
  40.                 printf("\nThis is a simple program to convert morse code into english and vise versa.\n");
  41.                 printf("\n\tFor english to morse the program isn't case sensitive.");
  42.                 printf("\n\tFor morse to english, words must be entered like this:\n");
  43.                 printf("\t\t.... . .-.. .-.. --- / .-- --- .-. .-.. -.. \n");
  44.                 printf("\t\t|___________________|^|____________________|\n");
  45.                 printf("\t\t        word         |          word        \n");
  46.                 printf("\t\t           space                    \n\n");
  47.                 printf("With dash(-) for long beep and period(.) for small beep.\n\nHope it helps.\n\n");
  48.                 break;
  49.             case 'e':
  50.                 return 0;
  51.                 break;
  52.             case '\0':
  53.             case '\n':
  54.                 break;
  55.             default:
  56.                 printf("Unknown input, try again.\n");
  57.                 c = 1;
  58.                 break;
  59.         }
  60.     }
  61.  
  62. }
  63.  
  64. void e2m(char string[], int i){
  65.     for(i = 0; string[i] != 0; i++){    //pretty simple here: take letter and see what it is.
  66.         switch(string[i]){
  67.             case 'a':
  68.             case 'A':
  69.                 printf(".- ");
  70.                 break;
  71.             case 'b':
  72.             case 'B':
  73.                 printf("-... ");
  74.                 break;
  75.             case 'c':
  76.             case 'C':
  77.                 printf("-.-. ");
  78.                 break;
  79.             case 'd':
  80.             case 'D':
  81.                 printf("-.. ");
  82.                 break;
  83.             case 'e':
  84.             case 'E':
  85.                 printf(". ");
  86.                 break;
  87.             case 'f':
  88.             case 'F':
  89.                 printf("..-. ");
  90.                 break;
  91.             case 'g':
  92.             case 'G':
  93.                 printf("--. ");
  94.                 break;
  95.             case 'h':
  96.             case 'H':
  97.                 printf(".... ");
  98.                 break;
  99.             case 'i':
  100.             case 'I':
  101.                 printf(".. ");
  102.                 break;
  103.             case 'j':
  104.             case 'J':
  105.                 printf(".--- ");
  106.                 break;
  107.             case 'k':
  108.             case 'K':
  109.                 printf("-.- ");
  110.                 break;
  111.             case 'l':
  112.             case 'L':
  113.                 printf(".-.. ");
  114.                 break;
  115.             case 'm':
  116.             case 'M':
  117.                 printf("-- ");
  118.                 break;
  119.             case 'n':
  120.             case 'N':
  121.                 printf("-. ");
  122.                 break;
  123.             case 'o':
  124.             case 'O':
  125.                 printf("--- ");
  126.                 break;
  127.             case 'p':
  128.             case 'P':
  129.                 printf(".--. ");
  130.                 break;
  131.             case 'q':
  132.             case 'Q':
  133.                 printf("--.- ");
  134.                 break;
  135.             case 'r':
  136.             case 'R':
  137.                 printf(".-. ");
  138.                 break;
  139.             case 's':
  140.             case 'S':
  141.                 printf("... ");
  142.                 break;
  143.             case 't':
  144.             case 'T':
  145.                 printf("- ");
  146.                 break;
  147.             case 'u':
  148.             case 'U':
  149.                 printf("..- ");
  150.                 break;
  151.             case 'v':
  152.             case 'V':
  153.                 printf("...- ");
  154.                 break;
  155.             case 'w':
  156.             case 'W':
  157.                 printf(".-- ");
  158.                 break;
  159.             case 'x':
  160.             case 'X':
  161.                 printf("-..- ");
  162.                 break;
  163.             case 'y':
  164.             case 'Y':
  165.                 printf("-.-- ");
  166.                 break;
  167.             case 'z':
  168.             case 'Z':
  169.                 printf("--.. ");
  170.                 break;
  171.             case ' ':
  172.                 printf("/ ");
  173.                 break;
  174.             case '-':
  175.             case '.':
  176.                 printf("\nError: Morse code character detected, please note that dash(-) and period(.) are morse letters and invalid in this mode\n");
  177.                 break;
  178.             default:
  179.                 printf("UNKNOWN: %c ---> ?\n", string[i]);
  180.         }
  181.     }
  182.  
  183.     return;
  184. }
  185.  
  186.  
  187. void m2e(char string[], int string_size){
  188.     unsigned char morse_letter[MAX]; //this was supposed to only be 4 chars long, but it gave me a stack smahing error when executed, so I messed with it until
  189.                      //I made it the same size as string[], not sure why tho...
  190.  
  191.     int i, j;
  192.  
  193.     for(i = 0; string[i] != '\0' ;){        //from here to the first "i++" should copy all characters from string[] to      morse_letter[] until the char
  194.         for(j = 0; string[i] != ' '; j++)   //copied is a space(' ').
  195.             morse_letter[j] = string[i++];
  196.         morse_letter[j] = '\0';
  197.         i++;
  198.  
  199.         if(!strcmp(morse_letter, ".-"))     //I wish there was a switch for strings.
  200.             putchar('a');
  201.         else if(!strcmp(morse_letter, "-..."))
  202.             putchar('b');
  203.         else if(!strcmp(morse_letter, "-.-."))
  204.             putchar('c');
  205.         else if(!strcmp(morse_letter, "-.."))
  206.             putchar('d');
  207.         else if(!strcmp(morse_letter, "."))
  208.             putchar('e');
  209.         else if(!strcmp(morse_letter, "..-."))
  210.             putchar('f');
  211.         else if(!strcmp(morse_letter, "--."))
  212.             putchar('g');
  213.         else if(!strcmp(morse_letter, "...."))
  214.             putchar('h');
  215.         else if(!strcmp(morse_letter, ".."))
  216.             putchar('i');
  217.         else if(!strcmp(morse_letter, ".---"))
  218.             putchar('j');
  219.         else if(!strcmp(morse_letter, "-.-"))
  220.             putchar('k');
  221.         else if(!strcmp(morse_letter, ".-.."))
  222.             putchar('l');
  223.         else if(!strcmp(morse_letter, "--"))
  224.             putchar('m');
  225.         else if(!strcmp(morse_letter, "-."))
  226.             putchar('n');
  227.         else if(!strcmp(morse_letter, "---"))
  228.             putchar('o');
  229.         else if(!strcmp(morse_letter, ".--."))
  230.             putchar('p');
  231.         else if(!strcmp(morse_letter, "--.-"))
  232.             putchar('q');
  233.         else if(!strcmp(morse_letter, ".-."))
  234.             putchar('r');
  235.         else if(!strcmp(morse_letter, "..."))
  236.             putchar('s');
  237.         else if(!strcmp(morse_letter, "-"))
  238.             putchar('t');
  239.         else if(!strcmp(morse_letter, "..-"))
  240.             putchar('u');
  241.         else if(!strcmp(morse_letter, "...-"))
  242.             putchar('v');
  243.         else if(!strcmp(morse_letter, ".--"))
  244.             putchar('w');
  245.         else if(!strcmp(morse_letter, "-..-"))
  246.             putchar('x');
  247.         else if(!strcmp(morse_letter, "-.--"))
  248.             putchar('y');
  249.         else if(!strcmp(morse_letter, "--.."))
  250.             putchar('z');
  251.         else if(!strcmp(morse_letter, "/"))
  252.             putchar(' ');
  253.         else;
  254.     }
  255.     return;
  256. }
Advertisement
Add Comment
Please, Sign In to add comment