FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.317 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 15-06-2005, 13:56   #1 (permalink)
m4f14b0y
Newbie
 
Registrado em: Jun 2005
Mensagens: 1
Reputação: 0 m4f14b0y está indo no caminho certo
Enviar mensagem via MSN para m4f14b0y
Padrão Sugestão para programa em C

Preciso de uma solução a mais simples possivel, para um programa q faça as seguintes funções:
* ler um arquivo texto no formato ASCII contendo uma notícia escrita na língua inglesa com, no mínimo, 500 palavras. Esta notícia deverá conter somente caracteres alfabéticos minúsculos e não conter pontuação alguma;
* o programa deverá ler este arquivo, contar o número de palavras e calcular a Entropia do texto de acordo com a seguinte fórmula:

H(x)= - (soma de n termos a partir do 1 p(i) X [log(i) na base 2])

ou seja, a entropia de um evento x, no caso o texto, é a soma do produto das probabilidades de ocorrência de um termo i e do logaritimo destas probabilidades.
* calcular a probabilidade acima dividindo o número de ocorrências de um termo i pelo número total de termos

A Entropia como definida acima é conhecida como Entropia de Shannon e tenta expressar a aleatoriedade de um texto. É uma medida muito utilizada no campo da Teoria da Informação.



Prensei em fazer o cógigo usando srtuc e vetores.... mais num sei combinar estes elementos nessa salada...
Qm quiser conversar por msn.. talvez eu esteja online...
obrigado
m4f14b0y está offline   Responder com Quote
Antigo 16-06-2005, 10:02   #2 (permalink)
oitavo_anjo
Super Participante
 
Avatar de oitavo_anjo
 
Registrado em: Aug 2004
Localização: teresina
Idade: 2
Mensagens: 630
Reputação: 19 oitavo_anjo é um modelo a seguiroitavo_anjo é um modelo a seguiroitavo_anjo é um modelo a seguir
Enviar mensagem via MSN para oitavo_anjo
Padrão

Código:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct typedef { // estrutura q vai guarda todas as palavras do texto char atual[20]; // vai receber a palavra atual int num; // posicao da palavra atual } estrutura; estrutura palavra[500]; // vai guardar todas as palavras do testo, supondo q sao 500 int posicao = 0; // posicao no vetor FILE *fp; // ponteiro para arquivo void lerArquivo (void) { // funcao q vai abrir o arquivo *fp = fopen(<arquivo_texto>, r); if (fp == NULL) { printf("Erro ao ler arquivo.\nSaindo do programa.\n"); exit(0); } } void buscarPalavra(void) { char ch = ":"; // inicializa ch com caractere invalido int pos = 0; while ((ch = getc(fp)) != EOF) { if (ch == " ") { palavra[posicao].atual[pos] = '\0'; // termina a string posicao++; // proxima palavra pos = 0; } else { // ler caractere do arquivo e concatena em atual palavra[posicao].atual[pos] = ch; pos++; } } } int main(void) { lerArquivo(); buscarPalavra(); return 0; }
com vetor vai ser alguma tipo essa........
mas ja q n se sabe quantas palavras vao ter, seria melhor usar ponteiro ao inves de vetor
oitavo_anjo está offline   Responder com Quote
Antigo 16-06-2005, 10:10   #3 (permalink)
intruso
Tô em todas
 
Avatar de intruso
 
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525 intruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputação
Padrão

problema não está no numero de palavras mas, no conceito de palavra.

isso já foi bem discutido aqui no forum dê uma pesquisada.

para ter uma idéia, uma palavra pode ser "cercada" por caracteres em branco e ai fica facil de contar.

ja que não sabe o tamanho do texto, pode usar alocação dinâmica.

o resto é matemática...

t+
__________________
Dê uma lida:
Eu não dou o peixe, ensino a pescar.

Meu Blog.
intruso está offline   Responder com Quote
Antigo 16-06-2005, 16:27   #4 (permalink)
pedro_desouza
Newbie
 
Registrado em: Jun 2005
Mensagens: 2
Reputação: 0 pedro_desouza está indo no caminho certo
Enviar mensagem via MSN para pedro_desouza
Padrão

Interessante esse mecanismo, mas nao seria interesante simplismentw contar o numero de espaços + 1? Caso o seja eliminado as pontuações, basta ultilizar o espaço como "refência"

See ya! 8) 8) 8)
__________________
"No começo apenas observei, depois percebi que valia a pena ajudar as outras pessoas"
pedro_desouza está offline   Responder com Quote
Antigo 16-06-2005, 16:32   #5 (permalink)
ResPiDeR
GeeK
 
Registrado em: Mar 2003
Localização: São Paulo e Ribeirão Preto
Mensagens: 2.165
Reputação: 21 ResPiDeR está indo no caminho certo
Enviar mensagem via ICQ para ResPiDeR
Padrão

Citação:
Postado Originalmente por pedro_desouza
Interessante esse mecanismo, mas nao seria interesante simplismentw contar o numero de espaços + 1? Caso o seja elimi...
acho que sim, já que o texto é um texto simples, somente com caracteres alfanumericos e sem titulo, etc..
__________________
[AMD AM2 Athlon X2 3800+@2.3ghz] [Abit KN9s] [Geforce 6500 (só pra ligar)] [HD SATA2 Seagate 250gb] [HD SATA2 Seagate 500gb] [2gb DDR2 667Mhz] [ST-350BKV] [DVD-RW 4167]

Laptop Core2Duo 1.73ghz, 2gb ram, 120gb, dvdrw

Ubuntu 7.10 em ambos
ResPiDeR está offline   Responder com Quote
Antigo 17-06-2005, 10:10   #6 (permalink)
intruso
Tô em todas
 
Avatar de intruso
 
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525 intruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputação
Padrão

o texto é muito simples pelo que o post original falou, sem pontuação, não tem com o que se preocupar....

basta, criar uma variavel controle e pensar em alguns casos especiais que podem enganar o contador, ai fica facil ...
__________________
Dê uma lida:
Eu não dou o peixe, ensino a pescar.

Meu Blog.
intruso está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 6:50.