El siguiente ejercicio propuesto por uno de nuestro seguidores al blog www.aprendoencasa.com que nos propone unos ejercicios o prácticas en la que se plantea que introduciendo caracteres separados por espacios en blanco simulando código morse, traduzca los mismos y visualice la cadena traducida en caracteres normales.
La solución de los ejercicios que se plantean es la siguiente:
/*
Nuevo ejercicio con solución o práctica resuelta
de programación en lenguaje c.
práctica con solución o resuelta, el enunciado
del ejercicio es el siguiente.
Realizar un programa que introduciendo caracteres separados por
espacios en blanco simulando código morse, traduzca los mismos y visualice
la cadena traducida en caracteres normales.
El ejercicio con solución ha sido planteado por un usuario del blog
www.aprendoencasa.com, y la solución a la práctica planteada es la que
se utiliza a continuación. Vuelvo a insistir en que no pretendo imponer
ningún tipo de sistema o forma de programación y que estaría encantado
de publicar soluciones alternativas al ejercicio o practica con solución
propuestas por los usuarios del blog.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
// Crear Variable para almacenar el código morse
char Morse[48][7];
// Matriz que almacena los caracteres correspondientes a la traducción
// al código morse asociando los índices de las dos matrices
char Simbolos[48];
// Variable para solicitar el código morse
char FraseMorse[200];
// Variable para almacenar el código traducido
char FraseNormal[200];
// Variables auxiliares
int contador;
int encontrado;
int contadorfrasenormal=0;
// Variable de tipo cadena para trabajar con ella en vez de trabajar
// con la variable original, se podría omitir
char CopiaFraseMorse[200];
// Puntero para trabajar con las palabras de la frase morse
char *Puntero;
// Delimitador para romper la cadena morse en trozos
char Delimitador[5]=" ";
// Guardar los caracteres correspondientes al código morse
// en una matriz y guardar los caracteres correspondientes de la
// traducción en otra matriz asociando así los códigos de índice
// entre las dos matrices
strcpy(Morse[0],".-"); // A
Simbolos[0]='A';
strcpy(Morse[1],"-..."); // B
Simbolos[1]='B';
strcpy(Morse[2],"-.-."); // C
Simbolos[2]='C';
strcpy(Morse[3],"-.."); // D
Simbolos[3]='D';
strcpy(Morse[4],"."); // E
Simbolos[4]='E';
strcpy(Morse[5],"..-."); // F
Simbolos[5]='A';
strcpy(Morse[6],"--."); // G
Simbolos[6]='G';
strcpy(Morse[7],"...."); // H
Simbolos[7]='H';
strcpy(Morse[8],".."); // I
Simbolos[8]='I';
strcpy(Morse[9],".---"); // J
Simbolos[9]='J';
strcpy(Morse[10],"-.-"); // K
Simbolos[10]='K';
strcpy(Morse[11],".-.."); // L
Simbolos[11]='L';
strcpy(Morse[12],"--"); // M
Simbolos[12]='M';
strcpy(Morse[13],"-."); // N
Simbolos[13]='N';
strcpy(Morse[14],"---"); // O
Simbolos[14]='O';
strcpy(Morse[15],".--."); // P
Simbolos[15]='P';
strcpy(Morse[16],"--.-"); // Q
Simbolos[16]='Q';
strcpy(Morse[17],".-."); // R
Simbolos[17]='R';
strcpy(Morse[18],"..."); // S
Simbolos[18]='S';
strcpy(Morse[19],"-"); // T
Simbolos[19]='T';
strcpy(Morse[20],"..-"); // U
Simbolos[20]='U';
strcpy(Morse[21],"...-"); // V
Simbolos[21]='V';
strcpy(Morse[22],".--"); // W
Simbolos[22]='W';
strcpy(Morse[23],"-..-"); // X
Simbolos[23]='X';
strcpy(Morse[24],"-.--"); // Y
Simbolos[24]='Y';
strcpy(Morse[25],"--.."); // Z
Simbolos[25]='Z';
strcpy(Morse[26],".-.-"); // Ä
Simbolos[26]='Ä';
strcpy(Morse[27],"---."); // Ö
Simbolos[27]='Ö';
strcpy(Morse[28],"..--"); // Ü
Simbolos[28]='Ü';
strcpy(Morse[29],"----"); // Ch
Simbolos[29]='$'; // no se ha especificado el símbolo correcto
strcpy(Morse[30],"-----"); // 0
Simbolos[30]='0';
strcpy(Morse[31],".----"); // 1
Simbolos[31]='1';
strcpy(Morse[32],"..---"); // 2
Simbolos[32]='2';
strcpy(Morse[33],"...--"); // 3
Simbolos[33]='3';
strcpy(Morse[34],"....-"); // 4
Simbolos[34]='4';
strcpy(Morse[35],"....."); // 5
Simbolos[35]='5';
strcpy(Morse[36],"-...."); // 6
Simbolos[36]='6';
strcpy(Morse[37],"--..."); // 7
Simbolos[37]='7';
strcpy(Morse[38],"---.."); // 8
Simbolos[38]='8';
strcpy(Morse[39],"----."); // 9
Simbolos[39]='9';
strcpy(Morse[40],".-.-.-"); // .
Simbolos[40]='.';
strcpy(Morse[41],"--..--"); // ,
Simbolos[41]=',';
strcpy(Morse[42],"..--.."); // ?
Simbolos[42]='?';
strcpy(Morse[43],"..--."); // !
Simbolos[43]='!';
strcpy(Morse[44],"---..."); // :
Simbolos[44]=':';
strcpy(Morse[45],".-..-."); // "
Simbolos[45]='"';
strcpy(Morse[46],".----."); // '
Simbolos[46]='\'';
strcpy(Morse[47],"-...-"); // =
Simbolos[47]='=';
// Solicitar la frase en morse
printf("\nFrase en morse:");
gets(FraseMorse);
// Realizar copia de la cadena para trabajar con ella
strcpy(CopiaFraseMorse,FraseMorse);
printf("\nFrase a analizar: %s",CopiaFraseMorse);
// Descomposición de la cadena en trozos
contadorfrasenormal = 0;
printf("\ndescomposición de la cadena en trozos\n");
// Primera llamada => Primer token
Puntero = strtok( CopiaFraseMorse, Delimitador);
// Mientras exista una palabra asociada al puntero recorrer la frase
while(Puntero!=NULL) {
printf( "\n%s", Puntero );
// Buscar el carácter correspondiente a la cadena
// Inicializar los contadores para recorrer la matriz de símbolos
// y código morse hasta encontrar el carácter correspondiente
contador=0;
encontrado=0;
while(contador<48 && encontrado!=1) {
// Si se encuentra el carácter se cambia la var encontrado
if (strcmp(Puntero,Morse[contador++])==0) encontrado=1;
}
// si se ha encontrado el carácter
if (encontrado==1) {
// se guarda el carácter en la variable de frase normal
FraseNormal[contadorfrasenormal++]=Simbolos[contador-1];
// se visualiza el símbolo correspondiente al carácter encontrado
printf(" %c",Simbolos[contador-1]);
}
// Siguientes llamadas de descomposición de la cadena
Puntero = strtok( NULL, Delimitador );
}
// Finalizar la variable que guarda la frase traducida con el símbolo de
// fin de cadena
FraseNormal[contadorfrasenormal]='/*
Nuevo ejercicio con solución o práctica resuelta
de programación en lenguaje c.
práctica con solución o resuelta, el enunciado
del ejercicio es el siguiente.
Realizar un programa que introduciendo caracteres separados por
espacios en blanco simulando código morse, traduzca los mismos y visualice
la cadena traducida en caracteres normales.
El ejercicio con solución ha sido planteado por un usuario del blog
www.aprendoencasa.com, y la solución a la práctica planteada es la que
se utiliza a continuación. Vuelvo a insistir en que no pretendo imponer
ningún tipo de sistema o forma de programación y que estaría encantado
de publicar soluciones alternativas al ejercicio o practica con solución
propuestas por los usuarios del blog.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
// Crear Variable para almacenar el código morse
char Morse[48][7];
// Matriz que almacena los caracteres correspondientes a la traducción
// al código morse asociando los índices de las dos matrices
char Simbolos[48];
// Variable para solicitar el código morse
char FraseMorse[200];
// Variable para almacenar el código traducido
char FraseNormal[200];
// Variables auxiliares
int contador;
int encontrado;
int contadorfrasenormal=0;
// Variable de tipo cadena para trabajar con ella en vez de trabajar
// con la variable original, se podría omitir
char CopiaFraseMorse[200];
// Puntero para trabajar con las palabras de la frase morse
char *Puntero;
// Delimitador para romper la cadena morse en trozos
char Delimitador[5]=" ";
// Guardar los caracteres correspondientes al código morse
// en una matriz y guardar los caracteres correspondientes de la
// traducción en otra matriz asociando así los códigos de índice
// entre las dos matrices
strcpy(Morse[0],".-"); // A
Simbolos[0]='A';
strcpy(Morse[1],"-..."); // B
Simbolos[1]='B';
strcpy(Morse[2],"-.-."); // C
Simbolos[2]='C';
strcpy(Morse[3],"-.."); // D
Simbolos[3]='D';
strcpy(Morse[4],"."); // E
Simbolos[4]='E';
strcpy(Morse[5],"..-."); // F
Simbolos[5]='A';
strcpy(Morse[6],"--."); // G
Simbolos[6]='G';
strcpy(Morse[7],"...."); // H
Simbolos[7]='H';
strcpy(Morse[8],".."); // I
Simbolos[8]='I';
strcpy(Morse[9],".---"); // J
Simbolos[9]='J';
strcpy(Morse[10],"-.-"); // K
Simbolos[10]='K';
strcpy(Morse[11],".-.."); // L
Simbolos[11]='L';
strcpy(Morse[12],"--"); // M
Simbolos[12]='M';
strcpy(Morse[13],"-."); // N
Simbolos[13]='N';
strcpy(Morse[14],"---"); // O
Simbolos[14]='O';
strcpy(Morse[15],".--."); // P
Simbolos[15]='P';
strcpy(Morse[16],"--.-"); // Q
Simbolos[16]='Q';
strcpy(Morse[17],".-."); // R
Simbolos[17]='R';
strcpy(Morse[18],"..."); // S
Simbolos[18]='S';
strcpy(Morse[19],"-"); // T
Simbolos[19]='T';
strcpy(Morse[20],"..-"); // U
Simbolos[20]='U';
strcpy(Morse[21],"...-"); // V
Simbolos[21]='V';
strcpy(Morse[22],".--"); // W
Simbolos[22]='W';
strcpy(Morse[23],"-..-"); // X
Simbolos[23]='X';
strcpy(Morse[24],"-.--"); // Y
Simbolos[24]='Y';
strcpy(Morse[25],"--.."); // Z
Simbolos[25]='Z';
strcpy(Morse[26],".-.-"); // Ä
Simbolos[26]='Ä';
strcpy(Morse[27],"---."); // Ö
Simbolos[27]='Ö';
strcpy(Morse[28],"..--"); // Ü
Simbolos[28]='Ü';
strcpy(Morse[29],"----"); // Ch
Simbolos[29]='$'; // no se ha especificado el símbolo correcto
strcpy(Morse[30],"-----"); // 0
Simbolos[30]='0';
strcpy(Morse[31],".----"); // 1
Simbolos[31]='1';
strcpy(Morse[32],"..---"); // 2
Simbolos[32]='2';
strcpy(Morse[33],"...--"); // 3
Simbolos[33]='3';
strcpy(Morse[34],"....-"); // 4
Simbolos[34]='4';
strcpy(Morse[35],"....."); // 5
Simbolos[35]='5';
strcpy(Morse[36],"-...."); // 6
Simbolos[36]='6';
strcpy(Morse[37],"--..."); // 7
Simbolos[37]='7';
strcpy(Morse[38],"---.."); // 8
Simbolos[38]='8';
strcpy(Morse[39],"----."); // 9
Simbolos[39]='9';
strcpy(Morse[40],".-.-.-"); // .
Simbolos[40]='.';
strcpy(Morse[41],"--..--"); // ,
Simbolos[41]=',';
strcpy(Morse[42],"..--.."); // ?
Simbolos[42]='?';
strcpy(Morse[43],"..--."); // !
Simbolos[43]='!';
strcpy(Morse[44],"---..."); // :
Simbolos[44]=':';
strcpy(Morse[45],".-..-."); // "
Simbolos[45]='"';
strcpy(Morse[46],".----."); // '
Simbolos[46]='\'';
strcpy(Morse[47],"-...-"); // =
Simbolos[47]='=';
// Solicitar la frase en morse
printf("\nFrase en morse:");
gets(FraseMorse);
// Realizar copia de la cadena para trabajar con ella
strcpy(CopiaFraseMorse,FraseMorse);
printf("\nFrase a analizar: %s",CopiaFraseMorse);
// Descomposición de la cadena en trozos
contadorfrasenormal = 0;
printf("\ndescomposición de la cadena en trozos\n");
// Primera llamada => Primer token
Puntero = strtok( CopiaFraseMorse, Delimitador);
// Mientras exista una palabra asociada al puntero recorrer la frase
while(Puntero!=NULL) {
printf( "\n%s", Puntero );
// Buscar el carácter correspondiente a la cadena
// Inicializar los contadores para recorrer la matriz de símbolos
// y código morse hasta encontrar el carácter correspondiente
contador=0;
encontrado=0;
while(contador<48 && encontrado!=1) {
// Si se encuentra el carácter se cambia la var encontrado
if (strcmp(Puntero,Morse[contador++])==0) encontrado=1;
}
// si se ha encontrado el carácter
if (encontrado==1) {
// se guarda el carácter en la variable de frase normal
FraseNormal[contadorfrasenormal++]=Simbolos[contador-1];
// se visualiza el símbolo correspondiente al carácter encontrado
printf(" %c",Simbolos[contador-1]);
}
// Siguientes llamadas de descomposición de la cadena
Puntero = strtok( NULL, Delimitador );
}
// Finalizar la variable que guarda la frase traducida con el símbolo de
// fin de cadena
FraseNormal[contadorfrasenormal]='\0';
// Visualizar la frase traducida
printf("\nLa frase traducida es %s\n",FraseNormal);
system("PAUSE");
return 0;
}
/*
El programa utiliza funciones de la librería string.h, las cuales
permiten tanto copiar la frase de una variable a otra como descomponer la
frase en tokens o partes utilizando delimitadores, siendo en este caso el
delimitador para descomponer la frase el espacio en blanco.
Gracias por vuestra visita al blog www.aprendoencasa.com
*/
';
// Visualizar la frase traducida
printf("\nLa frase traducida es %s\n",FraseNormal);
system("PAUSE");
return 0;
}
/*
El programa utiliza funciones de la librería string.h, las cuales
permiten tanto copiar la frase de una variable a otra como descomponer la
frase en tokens o partes utilizando delimitadores, siendo en este caso el
delimitador para descomponer la frase el espacio en blanco.
Gracias por vuestra visita al blog www.aprendoencasa.com
*/
El resultado del ejercicio o práctica anterior ha de ser similar al que se muestra a continuación en su ejecución.
Gracias por vuestra visita y un saludo universal.!!!