Páginas

NIMADRES

Traductor Codigo Morse a Texto en C++

El código morse o también conocido como alfabeto morse es un sistema de representación de letras y números mediante señales emitidas de forma intermitente.



Fue desarrollado por Alfred Vail mientras colaboraba en 1830 con Samuel Morse en la invención del telégrafo eléctrico. Vail creó un método según el cual cada letra o número era transmitido de forma individual con un código consistente en rayas y puntos, es decir, señales telegráficas que se diferencian en el tiempo de duración de la señal activa. La duración del punto es la mínima posible. Una raya tiene una duración de aproximadamente tres veces la del punto. Entre cada par de símbolos de una misma letra existe una ausencia de señal con duración aproximada a la de un punto. Entre las letras de una misma palabra, la ausencia es de aproximadamente tres puntos. Para la separación de palabras transmitidas el tiempo es de aproximadamente tres veces el de la raya. Morse reconoció la idoneidad de este sistema y lo patentó junto con el telégrafo eléctrico. Fue conocido como «American Morse Code» y fue utilizado en la primera transmisión por telégrafo.

Esta vez  hice de nuevo el programa que ya había subido como Convertir a Codigo Morse en C++.

Hoy tengo el programa pero la versión opuesta, ya que muchos me han pedido e programa, por falta de tiempo no había podido subir mas programas. Hoy se trata de ingresar precisamente el código y el programa regresa el texto.





#include <iostream>
#include <sstream>
#include <windows.h>

using namespace std;

void Insertar(string&);
void Morse(string);

void Menu()
{
   std::cout<<"\t============ CODIGO MORSE =============\n\n";
   std::cout<<"\t________________________________________\n";
   std::cout<<"\t|A .-    |  B -... |  C -.-. |  D -..  |\n";
   std::cout<<"\t|E .     |  F ..-. |  G --.  |  H .... |\n";                   
   std::cout<<"\t|I ..    |  J .--- |  K -.-  |  L .-.. |\n";
   std::cout<<"\t|M --    |  N -.   |  O ---  |  P .--. |\n";
   std::cout<<"\t|Q --.-  |  R .-.  |  S ...  |  T -    |\n";
   std::cout<<"\t|U ..-   |  V ...- |  W .--  |  X -..- |\n";
   std::cout<<"\t|Y -.--  |  Z --.. |         |         |\n";
   std::cout<<"\t________________________________________\n";
}
 
int main()
{
   string String = "";   
   Menu();
   Insertar(String);
   Morse(String);  
   std::cin.get();
   return 0;
}

void Insertar(string &String){
 std::cout<<"\nIngresa el codigo: ";
 getline(cin,String);
} 
void Morse(string String){
 string token;
 istringstream iss(String);
 std::cout<<"\nLa frase escrita es: ";
 stringstream morse;
 while ( getline(iss, token, ' ') ){
  if(strcmp(token.c_str(),".-")== 0)
   cout << "A";
  else if(strcmp(token.c_str(),"-...")== 0)
   cout << "B";
  else if(strcmp(token.c_str(),"-.-.")== 0)
   cout << "C";
  else if(strcmp(token.c_str(),"-..")== 0)
   cout << "D";
  else if(strcmp(token.c_str(),".")== 0)
   cout << "E";
  else if(strcmp(token.c_str(),"..-.")== 0)
   cout << "F";
  else if(strcmp(token.c_str(),"--.")== 0)
   cout << "G";
  else if(strcmp(token.c_str(),"....")== 0)
   cout << "H";
  else if(strcmp(token.c_str(),"..")== 0)
   cout << "I";
  else if(strcmp(token.c_str(),".---")== 0)
   cout << "J";
  else if(strcmp(token.c_str(),"-.-")== 0)
   cout << "K";
  else if(strcmp(token.c_str(),".-..")== 0)
   cout << "L";
  else if(strcmp(token.c_str(),"--")== 0)
   cout << "M";
  else if(strcmp(token.c_str(),"-.")== 0)
   cout << "N";
  else if(strcmp(token.c_str(),"---")== 0)
   cout << "O";
  else if(strcmp(token.c_str(),".--.")== 0)
   cout << "P";
  else if(strcmp(token.c_str(),"--.-")== 0)
   cout << "Q";
  else if(strcmp(token.c_str(),".-.")== 0)
   cout << "R";
  else if(strcmp(token.c_str(),"...")== 0)
   cout << "S";
  else if(strcmp(token.c_str(),"-")== 0)
   cout << "T";
  else if(strcmp(token.c_str(),"..-")== 0)
   cout << "U";
  else if(strcmp(token.c_str(),"...-")== 0)
   cout << "V";
  else if(strcmp(token.c_str(),".--")== 0)
   cout << "W";   
  else if(strcmp(token.c_str(),"-..-")== 0)
   cout << "X";
  else if(strcmp(token.c_str(),"-.--")== 0)
   cout << "Y";
  else if(strcmp(token.c_str(),"--..")== 0)
   cout << "Z";  
 }
 if(iss.fail());
}
Si tienen alguna sugerencia o comentario, no duden en hacérmelo saber.