Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
junior2500

Programa em C- Word Transformation

Recommended Posts

Alguem me ajuda a entender melhor esse código em c?

até agora eu entedi o seguinte, o programa altera uma única letra da palavra, para formar uma palavra nova, cada palavra e diferente da palavra escrita anteriormente, o programa altera apenas uma letra sendo assim o comprimento da palavra será sempre o mesmo.

Como a linguagem C e sensitive diferencia minúsculas de maiúsculas, todas as palavras deverão ser digitadas em letra minúsculas,caso contrario o programa mão vai reconhecer a palavra. Nenhuma palavra deve haver mais do que 10 letras, pois a capacidade de alocação do vetor e de 10 caracteres.

NOME DO PROGRAMA = Word Transformation

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

// Tiempo tardado: 28'20''

int getsLine(char s[])

{

int i = 0;

char ch;

s[0] = '\0';

if (1 != scanf("%c", &ch)) return 0;

while (ch != '\n')

{

if (ch != '\r') s[i++] = ch;

if (1 != scanf("%c", &ch)) break;

}

s = '\0';

return i;

}

int npalabras;

char palabras[210][11];

int grafo[200][200];

int ilee, jlee;

char line[10000];

void leepalabras(void)

{

npalabras= 0;

do

{

scanf("%s\n", palabras[npalabras]);

npalabras++;

} while (strcmp(palabras[npalabras-1],"*")!=0);

npalabras--;

}

int adyacente (int i, int j)

{

int pi, dif;

for (pi= 0, dif= 0; dif<=1 && palabras[pi]!='\0' && palabras[j][pi]!='\0'; pi++)

if (palabras[pi]!=palabras[j][pi])

dif++;

if (dif<=1 && palabras[pi]=='\0' && palabras[j][pi]=='\0')

return dif;

else return 5000;

}

void construyegrafo(void)

{

int i, j;

for (i= 0; i<200; i++)

for (j= 0; j<200; j++)

grafo[j]= 5000;

for (i= 0; i<npalabras; i++)

grafo= 1;

for (i= 0; i<npalabras-1; i++)

for (j= i+1; j<npalabras; j++)

grafo[j]= grafo[j]= adyacente(i, j);

}

void calculadistancias(void)

{

int i, j, k, piv;

for (k= 0; k<npalabras; k++)

for (i= 0; i<npalabras; i++)

for (j= 0; j<npalabras; j++)

{

piv= grafo[k] + grafo[k][j];

if (piv<grafo[j])

grafo[j]= piv;

}

}

void leepar(void)

{

int encontrado= 0;

char pal1[11],pal2[11];

sscanf(line, "%s %s", pal1, pal2);

for (ilee= 0; ilee<npalabras && !encontrado; ilee++)

if (strcmp(pal1, palabras[ilee])==0)

encontrado= 1;

encontrado= 0;

for (jlee= 0; jlee<npalabras && !encontrado; jlee++)

if (strcmp(pal2, palabras[jlee])==0)

encontrado= 1;

ilee--;

jlee--;

}

void escriberes(void)

{

printf("%s %s %d\n", palabras[ilee], palabras[jlee], grafo[ilee][jlee]);

}

int main (void)

{

int ncasos, i;

scanf("%d\n", &ncasos);

for (i= 0; i<ncasos; i++)

{

leepalabras();

construyegrafo();

calculadistancias();

while (getsLine(line))

{

leepar();

escriberes();

printf("\n");

}

}

}

Fico grato por toda ajuda =) :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×