Fazer o codigo morse usando string sem usar size of

1. Fazer o codigo morse usando string sem usar size of

MIsael Lopes de Alvares Francisco
Farkout

(usa XUbuntu)

Enviado em 09/11/2018 - 16:07h

Desenvolva um programa que receba uma frase qualquer e codifique para o código morse correspondente. Assuma que os traços serão dados pelo caracter ’-’ e os pontos serão dados pelo caracter ’o’. Usando string. e tambem fazer decodificador e codificador


  


2. Re: Fazer o codigo morse usando string sem usar size of

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 09/11/2018 - 16:50h

Você vai precisar criar um mapa com a relação de caracteres e código, depois basta caminhar na string e recuperar cada caractere.

A tabela você pode obter até na Wikipedia, https://pt.wikipedia.org/wiki/C%C3%B3digo_Morse.

Boa sorte!


3. Não consigo fazer o decodificador

MIsael Lopes de Alvares Francisco
Farkout

(usa XUbuntu)

Enviado em 10/11/2018 - 22:27h

Bom eu fiz esse algoritmo sem string porém não consigo fazer o decodificador.

#include <stdio.h>
#include <stdlib.h>

int main() {

int i, j, morse, k;

char l[37]={'a', 'b', 'c', 'd',
'e','f','g','h','i','j','k', 'l', 'm',
'n','o','p','q','r','s','t',
'u','v','w','x','y','z','1',
'2','3','4','5',
'6','7','8','9','0',};

char m[37][6]={{ "o- "}, {"-ooo "},
{"-o-o "}, {"-oo "}, {"o "}, {"oo-o "},
{"--o "}, { "oooo"}, {"oo " },
{"o--- "}, {"-o-"}, {"o-oo"},
{"-- "}, {"-o"}, {"--- "}, { "o--o"},
{"--o- "}, { "o-o "},
{"ooo "}, {"- "}, {"oo- "},
{"ooo- "},
{"o-- "}, {"-oo- "},
{"-o-- "}, {"--oo "},
{"o----"}, {"--oo-"},
{"ooo--"}, {"oooo-"},
{"ooooo"}, {"-oooo"},
{"--ooo"}, {"---oo"},
{"----o"},
{"-----"}, {"//"}};

char string[10000];

printf("Escreva algo, para ser codificado :\n");
gets(string);

for(i=0; i<string[i]; i++)
for(j=0; j<37; j++)

if(string[i]==l[j])
printf("%s", m[j]);





return 0;
}


4. Re: Fazer o codigo morse usando string sem usar size of

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 11/11/2018 - 11:56h

na verdade eu pensei numa matriz ...


#include <stdio.h>

#define ROW (36)
#define COL (2)

int main(void) {
int i, j;
const char * matrix[ROW][COL] = {
{"A", "o-"},
{"B", "-ooo"},
{"C", "-o-o"},
{"D", "-oo"},
{"E", "o"},
{"F", "oo-o"},
{"G", "--o"},
...
};

for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
printf("matrix[%d][%d] is %s\n", i, j, matrix[i][j]);
}
}

return 0;
}


Então você pode buscar direto pela relação de caractere com o código morse e apresentar o valor ou até buscá-lo.


5. Re: Fazer o codigo morse usando string sem usar size of

MIsael Lopes de Alvares Francisco
Farkout

(usa XUbuntu)

Enviado em 11/11/2018 - 17:31h

vlw pela ajuda vou tentar


6. Fiz esse outro algoritmo também

MIsael Lopes de Alvares Francisco
Farkout

(usa XUbuntu)

Enviado em 11/11/2018 - 17:52h

#include <stdio.h>
#include <string.h>
static const struct
{
const char l, *morse;
} Code[] =
{
{ 'A', "o- " },{ 'B', "-ooo " },{ 'C', "-o-o " },{ 'D', "-oo " },
{ 'E', "o " },{ 'F', "oo-o " },{ 'G', "--o " },{ 'H', "oooo " },
{ 'I', "oo " },{ 'J', "o--- " },{ 'K', "o-o- " },{ 'L', "o-oo " },
{ 'M', "-- " },{ 'N', "-o " },{ 'O', "--- " },{ 'P', "o--o " },
{ 'Q', "--o- " },{ 'R', "o-o " },{ 'S', "ooo " },{ 'T', "- " },
{ 'U', "oo- " },{ 'V', "ooo- " },{ 'W', "o-- " },{ 'X', "-oo- " },
{ 'Y', "-o-- " },{ 'Z', "--oo " },{ ' ', " " },
};
void codifica(const char *f)
{
int n, k;
for ( n = 0; f[n]; ++n)
{
for ( k = 0; k < Code; ++k )
{
if ( toupper(f[n]) == Code[k].l )
{
printf("%s", Code[k].morse);
break;
}
}
}
putchar('\n');
}
void decodifica(const char *morse)
{
printf("funcao decodificada\n");
int n, k;
for ( n = 0; morse[n]; n++)
{
for ( k = 0; k < Code; ++k )
{
int amigo = strlen(Code[k].morse);
if ( memcmp(Code[k].morse, &morse[n], amigo) == 0 )
{
putchar(Code[k].l);
n += amigo;
break;
}
}
}
putchar('\n');
}
int main(void)
{
int op=0;
char testo[50];
char test[50];
printf("\t\t\t\tDigite sua opcao\n1_Codificar\n2_Decodificar\n:");
scanf("%d",&op);
switch (op)
{
case 1:
{
printf("Digite seu texto a ser codificado\n");
scanf(" %[^\n]",testo);
codifica(testo);
break;
}
case 2:
{
printf("Digite seu texto a ser decodificado\n");
scanf(" %[^\n]",test);
int len;
len = strlen(test);
if (test[len -1]!=' ')
{
strcat(test," ");
}
decodifica(test);
break;
}
default:
{
printf("Vc digitou uma opcao nao correspondente!!");
main();
break;
}
}

return 0;
}


7. Re: Fazer o codigo morse usando string sem usar size of

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/11/2018 - 13:37h

Achei interessante o tópico.

Se o exercício fosse meu, eu acho que tentaria fazer a conversão de texto para Morse com algo parecido com a implementação das funções de <ctype.h>.

const char *tomorse(unsigned char c){
// O código Morse define representações para letras sem acento, algarismos
// e uns poucos sinais de pontuação e letras acentuadas. A tabela abaixo
// associa os code points de caracteres do ISO-8859-1 (subconjunto do Unicode
// superconjunto do ASCII com oito bits e que inclui algumas letras acentuadas)
// a strings, segundo a codificação Morse mais comum. Caracteres sem corres-
// pondente no código Morse produzem um string vazia, e o sinalizador EOF
// produz um ponteiro nulo.
// Fontes: https://morsecode.scphillips.com/morse2.html, https://en.wikipedia.org/wiki/Morse_code
// Nota: não incluí suporte para abreviaturas e códigos de procedimentos.
static const char _MORSE_TO_STRING[256][9]={
// Caracteres de 0 a 31 são os caracteres de controle (faixa C0).
// '\000' '\001' '\002' '\003' '\004' '\005' '\006' '\007'
"", "", "", "", "", "", "", "",
// '\010' '\011' '\012' '\013' '\014' '\015' '\016' '\017'
"", "", "", "", "", "", "", "",
// '\020' '\021' '\022' '\023' '\024' '\025' '\026' '\027'
"", "", "", "", "", "", "", "",
// '\030' '\031' '\032' '\033' '\034' '\035' '\036' '\037'
"", "", "", "", "", "", "", "",
// ' ' '!' '"' '#' '$' '%' '&' '\''
" ", "-.-.--", ".-..-.", "", "", "", ".-...", ".----.",
// '(' ')' '*' '+' ',' '-' '.' '/'
"-.--.", "-.--.-", "", ".-.-.", "--..--", "-....-", ".-.-.-", "-..-.",
// '0' '1' '2' '3' '4' '5' '6' '7'
"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...",
// '8' '9' ':' ';' '<' '=' '>' '?'
"---..", "----.", "---...", "", "", "-...-", "", "..--..",
// '@' 'A' 'B' 'C' 'D' 'E' 'F' 'G'
".--.-.", ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
// 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O'
"....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
// 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W'
".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--",
// 'X' 'Y' 'Z' '[' '\\' ']' '^' '_'
"-..-", "-.--", "--..", "", "", "", "", "",
// Para letras minúsculas, uso os mesmos códigos das maiúsculas.
// '`' 'a' 'b' 'c' 'd' 'e' 'f' 'g'
"", ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
// 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o'
"....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
// 'p' 'q' 'r' 's' 't' 'u' 'v' 'w'
".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--",
// 'x' 'y' 'z' '{' '|' '}' '~' '\177'
"-..-", "-.--", "--..", "", "", "", "", "........", // Livre interpretação minha de DEL ('\177') como o código telegráfico para ignorar/apagar última palavra.
// Caracteres de 128 a 159 são os caracteres de controle (faixa C1).
// '\200' '\201' '\202' '\203' '\204' '\205' '\206' '\207'
"", "", "", "", "", "", "", "",
// '\210' '\211' '\212' '\213' '\214' '\215' '\216' '\217'
"", "", "", "", "", "", "", "",
// '\220' '\221' '\222' '\223' '\224' '\225' '\226' '\227'
"", "", "", "", "", "", "", "",
// '\230' '\231' '\232' '\233' '\234' '\235' '\236' '\237'
"", "", "", "", "", "", "", "",
// '\240' '¡' '¢' '£' '¤' '¥' '\246' '§'
"", "", "", "", "", "", "", "",
// '¨' '©' 'ª' '«' '¬' '\255' '®' '\257'
"", "", "", "", "", "", "", "",
// '°' '±' '²' '³' '´' 'µ' '¶' '·'
"", "", "", "", "", "", "", "",
// '¸' '¹' 'º' '»' '¼' '½' '¾' '¿'
"", "", "", "", "", "", "", "",
// 'À' 'Á' 'Â' 'Ã' 'Ä' 'Å' 'Æ' 'Ç'
".--.-", "", "", "", ".-.-", "", "", "-.-..",
// 'È' 'É' 'Ê' 'Ë' 'Ì' 'Í' 'Î' 'Ï'
".-..-", "..-..", "", "", "", "", "", "",
// '\320' 'Ñ' 'Ò' 'Ó' 'Ô' 'Õ' 'Ö' '×'
"", "--.--", "", "----.", "", "", "", "",
// 'Ø' 'Ù' 'Ú' 'Û' 'Ü' 'Ý' 'Þ' 'ß'
"", "", "", "", "..--", "", ".--..", "",
// 'à' 'á' 'â' 'ã' 'ä' 'å' 'æ' 'ç'
".--.-", "", "", "", ".-.-", "", "", "-.-..",
// 'è' 'é' 'ê' 'ë' 'ì' 'í' 'î' 'ï'
".-..-", "..-..", "", "", "", "", "", "",
// 'ð' 'ñ' 'ò' 'ó' 'ô' 'õ' 'ö' '÷'
"", "--.--", "", "----.", "", "", "", "",
// 'ø' 'ù' 'ú' 'û' 'ü' 'ý' 'þ' 'ÿ'
"", "", "", "", "..--", "", ".--..", ""
};

return _MORSE_TO_STRING[c];
}



8. Re: Fazer o codigo morse usando string sem usar size of

MIsael Lopes de Alvares Francisco
Farkout

(usa XUbuntu)

Enviado em 12/11/2018 - 20:13h

nossa vlw vou melhorar ainda mais meu algoritmo.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts