Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Enunciado LP1 2014-2015 - 1ª época

Enunciado LP1 2014-2015 - 1ª época

Published by jorge100, 2015-06-09 04:51:02

Description: Enunciado LP1 2014-2015 - 1ª época

Search

Read the Text Version

Universidade Lusófona Linguagens de Programação I 2014-2015 2º semestre 1ª época Enunciado do ProjetoBookStatsIntroduçãoExistem cada vez mais livros disponíveis em formato digital, para consumo através decomputadores, telemóveis, tablets ou e-readers. Embora a maioria esteja em formato pdf, temcrescido o número de livros em formato txt através de iniciativas como o projecto guttenberg(http://www.gutenberg.org/), onde milhares de voluntários transcrevem regularmente livrospara esse formato.O elevado número de livros em formato txt abre portas ao tratamento estatístico automáticodesses mesmos livros, pois é relativamente fácil desenvolver um programa que leia esseformato (quando comparado com a leitura de um pdf).Neste projeto pretende-se precisamente explorar essa potencialidade, através dodesenvolvimento de um programa que, com base num livro em formato txt, produz um ficheirocom um conjunto de estatísticas interessantes sobre esse mesmo livro. O programa deverespeitar os requisitos descritos a seguir e deve ser implementado na linguagem C.RequisitosInput do programaO input do programa deve ser um ficheiro com a extensão .txt que representa um livro. Existeminúmero livros nesse formato no site http://www.gutenberg.org/. Para evitar complicaçõescom caracteres acentuados, os ficheiros devem estar em Inglês.Exemplo: A Ilíada de Homero está disponível neste link:http://www.gutenberg.org/ebooks/2199 1

Deve-se escolher a opção \"Plain Text UTF-8\" e descarregar o livro para o disco. Imaginando queo livro fica com o nome pg2199.txt, o programa deverá ser executado da seguinte forma:BookStats pg2199.txtOutput do programaO programa deve produzir um ficheiro, na pasta onde está a correr, com o mesmo nome que oficheiro do livro precedido de \"stats_\".Exemplo:Comando ProduzBookStats pg2199.txt stats_pg2199.txtBookStats lastEvolution.txt stats_lastEvolution.txtEstatísticas a produzirDeverão ser produzidos 10 indicadores estatísticos, apresentados abaixo com grau crescente dedificuldade.# Estatística Descrição1 Número de linhas Número de linhas do ficheiro2 Número de parágrafos Número de parágrafos do ficheiro. Neste contexto, um parágrafo é um bloco de palavras que termina com (pelo menos) uma linha em branco.3 Número de parágrafos Número de parágrafos do ficheiro que não terminam com o caracter '.'que não terminam em (ponto final). Útil para detetar erros de transcrição.ponto4 Número de parágrafos Número de parágrafos do ficheiro que não começam com letraque não começam com miúscula. Útil para detetar erros de transcrição.a letra maiúscula5 Número de palavras Número de palavras do ficheiro. De notar que certos caracteres como vírgulas e pontos não fazem parte das palavras (nem contam como palavras) mas outros caracteres como o hífen fazem parte da palavra (exemplo: \"meia-noite\" deve contar como uma palavra). Há mais caracteres além destes que devem ser considerados.6 Número de vogais e Número de vogais e consoantes no ficheiro.consoantes7 Número de palavras Número de palavras únicas do ficheiro, isto é, se uma palavra apareceúnicas várias vezes (mesmo que às vezes acentuada e outras não) deve contar só uma vez. Por exemplo, as palavras únicas do seguinte texto \"Hello, let's say hello!\" são: \"hello\", \"let's\" e \"say\".8 Número de ocorrências Para cada palavra única encontrada no ponto #6, identificar quantasde cada palavra única vezes ela ocorre no livro. 2

Por exemplo, no texto \"Hello, let's say hello!\", a palavra \"hello\" aparece duas vezes.9 50 palavras únicas mais De todas as palavras únicas identificadas no ponto #6, identificar as 50frequentes, ordenadas mais frequentes e ordená-las decrescentemente. Para cada palavrada mais frequente para deve igualmente ser mostrado o número de ocorrências (tal como noa menos frequente ponto #).10 Impressão de um gráfico Construção de um gráfico de barras (em ASCII, usando o caracter '#')de distribuição com as 50 palavras mais frequentes e a respetiva distribuição, assumindo que a barra da palavra mais frequente tem 70 caracteres'#\". Exemplo (mostrando apenas 28 linhas para simplificar): the ###################################################################### and ############################################## of ####################################### to ####################### he ################### his ################# in ############### a ############ with ########### you ########## that ########## for ######### as ######### him ######### I ######## was ######## they ####### on ####### but ####### from ###### it ###### son ###### had ###### not ###### their ###### is ##### all ##### will #####11 Encontrar possíveis Para as 20 palavras mais frequentes com mais de 4 caracteres, erros de transcrição encontrar ocorrências de permutações dessas mesmas palavras. com base nas Exemplo, encontrar permutações da palavra \"their\": \"hteir\", \"theri\", permutações das \"thier\", etc. Podem experimentar gerar permutações no site: palavras mais http://users.telenet.be/vdmoortel/dirk/Maths/permutations.html frequentes Devem escrever as permutações encontradas (uma única vez por permutação) e à frente, entre parêntesis, a palavra que deu origem à permutação. Exemplo: thiers (theirs)Recomendamos que desenvolvam o programa de forma iterativa, do indicador 1 para o 10 (istoé, só avancem para um indicador depois de terem resolvido os anteriores). 3

Formato do ficheiro de outputO ficheiro a produzir deve ter o seguinte formato (para identar, deverão usar o caracter tab ('\t'). Aordem dos campos deve ser preservada.linhas: 54673paragrafos: 13456paragrafos2: 7paragrafos3: 12palavras: 345234vogais: 2654563consoantes: 3410456palavrasU: 245398palavrasOcorr: the: 45768 world: 567 ...palavrasOcorrFreq: the: 45768 and: 28765 ...palavrasGrafico: the ###################################################################### and ############################################## of ####################################### to ####################### he ################### his ################# in ############### a ############ with ########### you ########## that ########## for ######### as ######### him ######### I ######## was ######## they ####### on ####### all ##### will #####palavrasPermut: thiers (theirs) theisr (theirs) wilsno (wilson) 4

Avaliação Avaliaçao 1Item 1Estatística #1 correta 1,5Estatística #2 correta 1,5Estatística #3 correta 1,5Estatística #4 correta 1,5Estatística #5 correta 1,5Estatística #6 correta 1,5Estatística #7 correta 2Estatística #8 correta 2Estatística #9 correta 2Estatística #10 correta 3Estatística#11 corretaLegibilidade do código (evita constantes mágicas; utiliza estruturasadequadas; indentação correta; nomes significativos para variáveis efunções; separação do código por funções)Nota: Será necessário utilizar alocação dinâmica de memória (malloc e/ou realloc). Alunos quenão implementem alocação dinâmica de memória terão uma penalização de 3 valores.EntregaO projeto deve ser feito em grupos de 1 a 3 alunos.A composição dos grupos deve ser comunicada por email para o Professor correspondente atéao dia 24 de Abril. Só serão aceites projetos de grupos comunicados até essa data.A entrega deve ser feita via moodle, usando a pasta de entrega de projeto do Professorcorrespondente.O projeto deve ser entregue até às 23h30 do dia 21 de Junho de 2015. Não serão aceitesprojetos entregues após esta data/hora.Cópia de projetos não será tolerada. Os respectivos grupos terão automaticamente a nota zero.Haverá uma discussão presencial obrigatória para todos os elementos do grupo. A nãocomparência nesta discussão implica a atribuição da nota zero ao aluno ausente.5


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook