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