C program to Implement Morse code to text conversion and vice-versa.

C program to Implement Morse code to text conversion and vice-versa.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<process.h>
 
void main()
{
	char str[25],str1[100];
	clrscr();
	fflush(stdin);
	printf("enter the String");
	gets(str);
 
	int j=0;
	for(int i=0;i<=strlen(str);++)
	{
		switch(toupper(str[i]))
		{
		  case 'A':
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		  case 'b':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		  case 'c':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		  case 'D':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		  case 'E':
		  str1[j]='.';
		  break;
 
		  case 'F':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		  case 'G':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		  case 'H':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		   case 'I':
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'J':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'K':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'L':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		  break;
 
		case 'M':
		  str1[j++]='-';
		    str1[j]='-';
		    break;
 
		case 'N':
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case 'O':
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case 'P':
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case 'Q':
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'R':
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case 'S':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'T':
		  str1[j]='-';
		    break;
 
		case 'U':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'V':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case 'W':
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j]='-';
		    break;
 
		case 'X':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case 'y':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case 'Z':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case '0':
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='-';
		    break;
 
		case '1':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-'; 
		  str1[j]='-';
		    break;
 
		case '2':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case 'F':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case '3':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case '4':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '5':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='.';
		    break;
 
		case '6':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '7':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '8':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '9':
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case '.':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case ',':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case ':':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '?':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		/* case '\';
		  str1[j++]='.';
		  str1[j++]='.'; 
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break; */
 
		case '-':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case ';':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case '(':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case ')':
		  str1[j++]='.';
		  str1[j++]='.'; 
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case ']':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='-';
		    break;
 
		case '[':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j]='.';
		    break;
 
		case '}':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '{':
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j++]='-';
		  str1[j++]='-';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '"':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '+':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '/':
		  str1[j++]='.';
		  str1[j++]='.';  
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '%':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '&':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '$':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '*':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '^':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '#':
		  str1[j++]='.';
		  str1[j++]='.';  
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '@':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='-';
		    break;
 
		case '=':
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j++]='.';
		  str1[j]='';
		    break;
		}
	    j++;
	}
	str1[j-1]='\0';
	puts(str1);
	getch();
 }

6 Responses to “C program to Implement Morse code to text conversion and vice-versa.”

  1. Kirti Kumar Kasat

    There are a few corrections in this program..
    1.You need to include”ctype.h” in order to use toupper function…
    2. the output is not what is desired..the code should be corrected plz..

    Reply
  2. Profile photo of surendar

    This is great but even though you encode a normal string into a morse string how can you decode the morse string to normal string , i’m having trouble in seperating a mourse character .

    my choice is get the string in a array and for each character is converted into a morse string and stored in a 2-Dimentional array .

    but it occupies a lot of space and time , can someone suggest someidea …..

    thanks in advance.

    ReplyReport user
  3. amarnath

    and for loop starts from 0- (n-1) correct me if i am wrong .

    Reply
  4. vicky_dx

    // new_morse_code.cpp : Defines the entry point for the console application.
    //

    // morse_code.cpp : Defines the entry point for the console application.
    //

    #include
    #include
    #include

    char * morse_alpha[] = {
    “.-“, “-…”, “-.-.”, “-..”, “.”, “..-.”,
    “–.”, “….”, “..”, “.—“, “-.-“, “.-..”,
    “–“, “-.”, “—“, “.–.”, “–.-“, “.-.”,
    “…”, “-“, “..-“, “…-“, “.–“, “-..-“,
    “-.–“, “–..”
    };
    char *morse_num[] = {
    “—–“, “.—-“, “..—“,
    “…–“, “….-“, “…..”,
    “-….”, “–…”, “—..”,
    “—-.”
    };

    void find_morse(char *s);
    int main()
    {

    char str[500];

    printf(“Enter anything : “);
    while (1)
    {
    scanf(“%s”, str); //You can use gets function too;
    find_morse(str);
    printf(“\n”);
    }
    return 0;

    }
    void find_morse(char *s)
    {
    while (*s)
    {
    switch (toupper(*s))
    {
    case ‘A’:
    printf(“%s”, morse_alpha[‘A’ – 65]);
    s++;
    break;
    case ‘B’:
    printf(” %s”, morse_alpha[‘B’ – 65]);
    s++;
    break;
    case ‘C’:
    printf(” %s”, morse_alpha[‘C’ – 65]);
    s++;
    break;
    case ‘D’:
    printf(” %s”, morse_alpha[‘D’ – 65]);
    s++;
    break;
    case ‘E’:
    printf(” %s”, morse_alpha[‘E’ – 65]);
    s++;
    break;
    case ‘F’:
    printf(” %s”, morse_alpha[‘F’ – 65]);
    s++;
    break;
    case ‘G’:
    printf(” %s”, morse_alpha[‘G’ – 65]);
    s++;
    break;
    case ‘H’:
    printf(” %s”, morse_alpha[‘H’ – 65]);
    s++;
    break;
    case ‘I’:
    printf(” %s”, morse_alpha[‘I’ – 65]);
    s++;
    break;
    case ‘J’:
    printf(” %s”, morse_alpha[‘J’ – 65]);
    s++;
    break;
    case ‘K’:
    printf(” %s”, morse_alpha[‘K’ – 65]);
    s++;
    break;
    case ‘L’:
    printf(” %s”, morse_alpha[‘L’ – 65]);
    s++;
    break;
    case ‘M’:
    printf(” %s”, morse_alpha[‘M’ – 65]);
    s++;
    break;
    case ‘N’:
    printf(” %s”, morse_alpha[‘N’ – 65]);
    s++;
    break;
    case ‘O’:
    printf(” %s”, morse_alpha[‘O’ – 65]);
    s++;
    break;
    case ‘P’:
    printf(” %s”, morse_alpha[‘P’ – 65]);
    s++;
    break;
    case ‘Q’:
    printf(” %s”, morse_alpha[‘Q’ – 65]);
    s++;
    break;
    case ‘R’:
    printf(” %s”, morse_alpha[‘R’ – 65]);
    s++;
    break;
    case ‘S’:
    printf(” %s”, morse_alpha[‘S’ – 65]);
    s++;
    break;
    case ‘T’:
    printf(” %s”, morse_alpha[‘T’ – 65]);
    s++;
    break;
    case ‘U’:
    printf(” %s”, morse_alpha[‘U’ – 65]);
    s++;
    break;
    case ‘V’:
    printf(” %s”, morse_alpha[‘V’ – 65]);
    s++;
    break;
    case ‘W’:
    printf(” %s”, morse_alpha[‘W’ – 65]);
    s++;
    break;
    case ‘X’:
    printf(” %s”, morse_alpha[‘X’ – 65]);
    s++;
    break;
    case ‘Y’:
    printf(” %s”, morse_alpha[‘Y’ – 65]);
    s++;
    break;
    case ‘Z’:
    printf(” %s”, morse_alpha[‘Z’ – 65]);
    s++;
    break;
    case ‘0’:
    printf(” %s”, morse_num[0]);
    s++;
    break;
    case ‘1’:
    printf(” %s”, morse_num[1]);
    s++;
    break;
    case ‘2’:
    printf(” %s”, morse_num[2]);
    s++;
    break;
    case ‘3’:
    printf(” %s”, morse_num[3]);
    s++;
    break;
    case ‘4’:
    printf(” %s”, morse_num[4]);
    s++;
    break;
    case ‘5’:
    printf(” %s”, morse_num[5]);
    s++;
    break;
    case ‘6’:
    printf(” %s”, morse_num[6]);
    s++;
    break;
    case ‘7’:
    printf(” %s”, morse_num[7]);
    s++;
    break;
    case ‘8’:
    printf(” %s”, morse_num[8]);
    s++;
    break;
    case ‘9’:
    printf(” %s”, morse_num[9]);
    s++;
    break;
    default:
    return;
    }
    //s++;
    }
    }

    Reply
  5. G L S Mahidhar

    #include
    #include
    #include
    main()
    {
    char *alphamorse[]={“.-“,”-…”,”-.-.”,”-..”,”.”,”..-.”,”–.”,”….”,”..”,”.—“,
    “-.-“,”.-..”,”–“,”-.”,”—“,”.–.”,”–.-“,”.-.”,”…”,”-“,”..-“,
    “…-“,”.–“,”-..-“,”-.–“,”–..”};
    char *nummorse[]={“—–“,”.—-“,”..—“,”…–“,”….-“,”…..”,”-….”,”–…”,”—..”,”—-.”};

    int i;
    char str[1000],str1[1000];
    printf(“Enter a sentence\n”);
    gets(str);
    i=0;
    while(str[i]!=’\0′)
    {
    if(str[i]!=’ ‘&&(!isdigit(str[i])))
    {
    printf(“%s “,alphamorse[toupper(str[i])-65]);
    }
    if(str[i]==’ ‘)
    {
    printf(” “);
    }
    if(isdigit(str[i])&&str[i]!=’ ‘)
    {
    printf(“%s “,nummorse[str[i]-48]);
    }

    i++;
    }
    printf(“\n”);

    }
    See more at ” https://cprograms4future.blogspot.in

    Reply

Leave a Reply