Ir para conteúdo
Fórum Script Brasil
  • 0

[dúvidas Com Relação A Struct E Lista]


feswood

Pergunta

Pessoal é o seguinte leiam atentamente essa questão dada pra mim:

O seguinte método para codificar despachos diplomáticos foi adotado:

primeiro etapa – todas seqüências não vogais incluindo o espaço em branco e os caracteres de pontuação são invertidas.

Segunda etapa – a mensagem inteiro resultante é invertida dando origem à mensagem codificada.

Por exemplo a mensagem original

PROBLEMAS HIPER-INTERESSANTES.

Passa a ser

RPOLBEMAH SIPE-RITNERESSATNE.S

Após a primeira etapa e finalmente é codificada como

S.ENTASSERENTIR-EPIS HAMEBLOPR

Após a Segunda etapa.

O embaixador recebeu uma mensagem codificada como se segue:

S. ETEUQAS RES TRIAR MAMPRO CEUGENSO CE SE. VENTERGU

Escreva um programa em C que ajude o embaixador a decodificar mensagens assim codificadas. Use alocação dinâmica (onde cada nó contém um caractere no campo de info), pois o embaixador não sabe o tamanho da mensagem.

aí está o código feito por mim:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

//

// retorna != 0 se o valor passado

// e' uma vogal

//

int vogal(char c)

{

char *v="AaEeIiOoUu";

while(*v)

if(*v++==c)

return true;

return false;

}

//

// detecta as sequencias de não-vogais

// e defaz as trocas

//

void troca(char *msg, int *i)

{

int j, t;

char aux;

j=*i;

t=0;

while(msg[j]&&!vogal(msg[j++])) t++;

switch(t)

{

case 2: // 2 não-vogais contiguas

aux=msg[*i];

msg[*i]=msg[*i+1];

msg[*i+1]=aux;

(*i)+=2;

break;

case 3: // 3 não-vogais contiguas

aux=msg[*i];

msg[*i]=msg[*i+2];

msg[*i+2]=aux;

(*i)+=3;

break;

case 4: // 4 não-vogais contiguas

aux=msg[*i];

msg[*i]=msg[*i+3];

msg[*i+3]=aux;

aux=msg[*i+1];

msg[*i+1]=msg[*i+2];

msg[*i+2]=aux;

(*i)+=4;

break;

}

}

void main()

{

int k, j, t;

char aux, *msg;

msg = (char*) malloc(80);

printf("Digite a mensagem codificada:\n>> ");

gets(msg);

t=strlen(msg);

k=0;

j=t-1;

// reverte a string...

while(j>k)

{

aux=msg[k];

msg[k]=msg[j];

msg[j]=aux;

k++;

j--;

}

// desfaz as trocas não-vogais...

for(k=0; k<t; k++) troca(msg, &k);

printf("\nMensagem decodificada:\n>> %s", msg);

free(msg);

}

Porém não encontro uma maneira de encaixar uma Struct no código alguém poderia ajudar onde iseria a Struct como pedido na questão?? e o malloc tirar aquele 80 porque se a mensagem for maior que 80 vai dar erro.. ajudem por favor

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

velho você tem que utilizar uma estrutura ai no seu programa...

você nem colocou nada...

tipo uma struct fica logo apos as declarações de bibliotecas

no caso dos #include

uma estrutura para o seu caso seria mais ou menos assim.

typedef struct no {
         char dado;
         struct no *prox
         } *estrutura;

de uma olhada nesses sites abaixo quem sabe não te ajuda... :blink:

http://www.ime.usp.br/~pf/algoritmos/

http://ead1.eee.ufmg.br/cursos/C/

abraços :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...