AJUDA DÚVIDA LINGUAGEM C <-

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

AJUDA DÚVIDA LINGUAGEM C <-

Mensagempor 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
Novato
 
Mensagens: 2
Registado: Sábado Dez 05, 2009 19:15

Mensagempor 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
Membro de Prata
 
Mensagens: 305
Registado: Terça Dez 27, 2005 3:43
Localização: Cacém

Mensagempor 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
Novato
 
Mensagens: 2
Registado: Sábado Dez 05, 2009 19:15

Mensagempor 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
Novato
 
Mensagens: 1
Registado: Domingo Dez 13, 2009 20:04

Mensagempor 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
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Mensagempor 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 :D
JoKeR}
Membro de Prata
Membro de Prata
 
Mensagens: 305
Registado: Terça Dez 27, 2005 3:43
Localização: Cacém

Mensagempor 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 :D
Cérebrozinho deformado pela programação ... :roll:
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Mensagempor 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
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

cron