PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por mmap » Sábado Dez 05, 2009 19:23
Olá.
Estou com uma pequena dúvida.
Estou a fazer um projecto qe consiste em três tarefas, e pelo menos duas delas estão feitas. A terceira é qe me está a dar mais trabalho...
Essa diz para transformar código morse (os pontos e os traços) em letras e números.
A primeira coisa que me lembrei foi em usar o switch, mas essa função só funciona com um caracter, e os pontos e traços formam mais que um caracter, logo não posso usar essa função na terceira tarefa.
Podem-me ajudar? Que função posso usar?
É URGENTE :/
Obrigada
-
mmap
- Novato

-
- Mensagens: 2
- Registado: Sábado Dez 05, 2009 19:15
por JoKeR} » Domingo Dez 06, 2009 3:40
Assim de repente, faz uma funçãozinha simples que receba um "caracter morse", basicamente um char array de pontos e traços (parto do principio que estão separados por espaços, tipo -. ..)
Depois lá dentro só tens de ter o trabalho de descodificar UM caracter morse para uma letra, e aí sim, usas um switch para a coisa.
Se souberes o que são árvores binárias, podes fazer um esquema desses para eficientemente descobrires que letra é, porque podes agrupar, e aí usas cada char do array de chars original (isto sempre dentro do novo método que criaste para descodificar/converter o morse)
Senão, fica-te pelo switch a comparar strings... Creio que dá.
Para um exemplo da arvore binária, ja que estou inspirado, pode funcionar algo do género:
o A é o .-
o B é o -...
o C é o -.-.
o D é o -..
o E é o .
e finalmente o F é o ..-.
Começas por avaliar o 1º char do caracter morse.
Se for um . sabes que está no grupo que inclui o A, E e F, se for um - é o B, C ou D.
Se for um . e só tiver 1 char, é o E, se tiver um - e mais nenhum char é o A, e por aí adiante.
Torna-se mais eficiente do que procurar numa lista de strings conhecidas (imagina que é o Z... tens de percorrer tudo -> pior performance).
-
JoKeR}
- Membro de Prata

-
- Mensagens: 305
- Registado: Terça Dez 27, 2005 3:43
- Localização: Cacém
por mmap » Domingo Dez 06, 2009 14:14
Infelizmente não nos ensinaram a trabalhar com árvores binárias, mas realmente parece-me uma maneira um pouco mais fácil de fazer. Até poderia usar mas acho que só podemos usar funções que tenhamos aprendido.
Com o switch... não compreendo como é que vou lá. Já tentei várias formas e infelizmente só me aparece a letra A. Não devo estar a realizar aquilo de maneira certa...
:/
-
mmap
- Novato

-
- Mensagens: 2
- Registado: Sábado Dez 05, 2009 19:15
por jMcb » Domingo Dez 13, 2009 20:06
já agora podes me dizer (se já tens feito) como se fazem os outros dois? =s
-
jMcb
- Novato

-
- Mensagens: 1
- Registado: Domingo Dez 13, 2009 20:04
por LuisFilipe » Segunda Dez 14, 2009 14:42
mmap Escreveu:Infelizmente não nos ensinaram a trabalhar com árvores binárias, mas realmente parece-me uma maneira um pouco mais fácil de fazer. Até poderia usar mas acho que só podemos usar funções que tenhamos aprendido.
Com o switch... não compreendo como é que vou lá. Já tentei várias formas e infelizmente só me aparece a letra A. Não devo estar a realizar aquilo de maneira certa...
:/
Quem não sabe procura....
eu também não sabia, sabia que era tipo case mas de resto...
com amigo google...
http://www.eng.uerj.br/~marcelo/msx/cursos/c10.html
- Código: Seleccionar todos
switch (variável)
{
case valor1 : expressão; break;
case valor2 : expressão; break;
...
default: expressão;
}
A expressão é o tratamento, caso o valor seja o especificado antes dela. Se for uma linha apenas, é ela pura. Se for duas ou mais, deve ser seguido de chaves.
Exemplo:
#include <stdio.h>
int idade;
int main(void)
{
printf("Qual a sua dezena de idade (0,10,...)?");
scanf("%d",&idade);
switch (idade)
{
case 0 : printf("Crianca"); break;
case 10 : printf("Adolescente"); break;
case 20 : printf("Jovem"); break;
case 30 : printf("Adulto"); break;
case 40 : printf("Coroa"); break;
default : printf("Aposentado");
}
}
Quanto à árvore binária, tive ontem a ver a wikipedia e tem lá 'a' arvore do codigo morse
http://en.wikipedia.org/wiki/Morse_code
-
LuisFilipe
- Membro Diamante

-
- Mensagens: 1270
- Registado: Domingo Set 04, 2005 22:12
por JoKeR} » Segunda Dez 14, 2009 17:40
É algo muito muito estupido, mas não cheguei a ver a arvore quando olhei para a wiki, só vi mesmo o que me interessava, ou seja, os pontos e traços... lol.
Mas aparentemente a minha ideia é tudo menos nova XD O que é bom, significa que não estava errada

-
JoKeR}
- Membro de Prata

-
- Mensagens: 305
- Registado: Terça Dez 27, 2005 3:43
- Localização: Cacém
por LuisFilipe » Segunda Dez 14, 2009 22:05
JoKeR} Escreveu:É algo muito muito estupido, mas não cheguei a ver a arvore quando olhei para a wiki, só vi mesmo o que me interessava, ou seja, os pontos e traços... lol.
Mas aparentemente a minha ideia é tudo menos nova XD O que é bom, significa que não estava errada

Cérebrozinho deformado pela programação ...

-
LuisFilipe
- Membro Diamante

-
- Mensagens: 1270
- Registado: Domingo Set 04, 2005 22:12
por JoKeR} » Terça Dez 15, 2009 13:29
Licenciatura de Eng. Informática e de Computadores pelo ISEL... tem dessas coisas XD
-
JoKeR}
- Membro de Prata

-
- Mensagens: 305
- Registado: Terça Dez 27, 2005 3:43
- Localização: Cacém
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante