Introdução aos Algoritmos e Estruturas de Dados 2011/2012



Documentos relacionados
Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL

SISTEMA DE PROCESSAMENTO DE AVALIAÇÕES INTERMÉDIAS SPAI

Manual do Ambiente Moodle para Professores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Engenharia de Software. Enunciado da Primeira Parte do Projecto

Engenharia de Software. Enunciado da Segunda Parte do Projecto

POLÍCIA DE SEGURANÇA PÚBLICA

Manual do GesFiliais

REGULAMENTO N.º ---/SRIJ/2015 REGRAS DE EXECUÇAO DAS APOSTAS DESPORTIVAS À COTA EM QUE OS JOGADORES JOGAM UNS CONTRA OS OUTROS

Engenharia de Software Sistemas Distribuídos

Novo Formato de Logins Manual de Consulta

Engenharia de Software. Enunciado da Quarta Parte do Projecto

COMPUTAÇÃO e PROGRAMAÇÃO

Regulamento do Concurso

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

Engenharia de Software. Enunciado da Quarta Parte do Projecto

PROJ. Nº LLP NL-ERASMUS-ECUE

INSTRUÇÕES DE PREENCHIMENTO. Por favor leia atentamente este documento antes de começar o seu processo de candidatura.

Regulamento Cursos de Pós Graduação

Obrigatoriedade de Comunicação SAFT-PT Questões Mais Frequentes Lista de Questões neste documento

Introdução ª Parte - Acesso à Aplicação Avaliação Online... 4 I Aceder à Aplicação Inscrição Acesso à Aplicação...

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

PROJETO DE REGULAMENTO N.º ---/SRIJ/2015 REGRAS DE EXECUÇAO DAS APOSTAS DESPORTIVAS À COTA

Projecto de Programação MEEC /2011-1ºSemestre. Mestrado Integrado em Engenharia Electrotécnica e de Computadores

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Tutorial exe elearning XHTML editor (versão 1.0x)

PROJETO DE REGULAMENTO N.º ---/SRIJ/2015 REGRAS DE EXPLORAÇÃO DE APOSTAS HÍPICAS MÚTUAS ONLINE

ARTº 1º (ÂMBITO) ARTº 2º (REQUERIMENTO DE APLICAÇÃO DO ESTATUTO)

Procedimentos para a divulgação de eventos no site da ECUM

Política WHOIS do Nome de Domínio.eu

Guia de Acesso à Formação Online Formando

1. Ambiente de Trabalho

UNIVERSIDADE CATÓLICA PORTUGUESA DSI

A. Questões de âmbito geral sobre Prescrição Electrónica de Medicamentos (PEM)

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Documento de actualização funcional. Refª JURI-DEV v1

Manual do Utilizador do Registo Prévio (Entidades Coletivas e Singulares)

Prova de Aferição de Matemática

Regulamento do Global Management Challenge 2015

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Manual de Colaboração

Um sistema SMS 1 simplificado

Computadores Portáteis. Regulamento de utilização

Modelação conceptual de classes

Projecto de Implementação da. Modelo 11

MAIL DINÂMICO O QUE É? . É UM MÓDULO DO SIGARRA QUE PRETENDE FACILITAR A COMUNICAÇÃO

Manual do Gestor da Informação do Sistema

Moodle - CEAD Manual do Estudante

MicroMIX Comércio e Serviços de Informática, Lda.

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação?

REGULAMENTO DE ACTIVIDADES BÁSICO (2º e 3º CICLOS) E SECUNDÁRIO (Válido até 31 de Maio de 2010)

Manual Gespos Passagem de Dados Fecho de Ano

Instalação do software cygwin

MANUAL DO UTILIZADOR

Plataforma de Benefícios Públicos Acesso externo

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Perguntas Frequentes

CAP. I ERROS EM CÁLCULO NUMÉRICO

Trabalho Final. Data da Submissão: das 8h do dia 16/06 às 24h do dia 17/06. Data da Entrega do Relatório: das 15h às 18h no dia 18/06.

第 61/2004 號 經 濟 財 政 司 司 長 對 外 規 範 性 批 示. Artigo 7.º 第 七 條 賠 率. prémios: Ao jogador que ganha pertencem o valor da aposta e os seguintes

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

Bolsa de Inovação da Secção Regional de Lisboa DA ORDEM DOS FARMACÊUTICOS REGRAS DE ATRIBUIÇÃO

Licenciatura em Eng.ª Informática Complementos de Redes - 3º Ano - 2º Semestre. Trabalho Nº 4 - VoIP

Aplicações de Escritório Electrónico

(Consulta Real em Ambiente Virtual)

Quadro 2 Distribuição temporal das partes do teste. Pausa para recolha e distribuição de material

Google Sites. A g r u p a m e n t o C a m p o A b e r t o /

Curso de Licenciatura em Engenharia Informática Cadeira de Algoritmia

Copyright Restinfor, Lda

tarefa 1. Para criar uma Tarefa clique em Ativar edição.

Sistema LigaMagic de Torneios

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Plano Tecnológico da Educação: um meio para a melhoria do desempenho escolar dos alunos

Manual de Utilizador Carregamento e Processamento de Ficheiros via Internet Banking. Português - V1

Dadas a base e a altura de um triangulo, determinar sua área.

Regulamento do inventa rio. Junta de freguesia da Carapinheira

Relatório SHST

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

AMBIENTE DE PROGRAMAÇÃO PYTHON

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Versão Melhorias Melhorias Versão 6.0.1

Regulamento. Cartão. Giae. Pag. 1

Manual de Acesso ao Sistema SAORI Portal do Aluno

TERMOS DE UTILIZAÇÃO DA ÁREA DE ASSINATURA DO MUNDO MÁGICO NV Nutri Ventures Corporation, S.A.

Manual do Estagiário

Regulamento de Inventário e Cadastro dos Bens da Junta de Freguesia

Manual Upgrade para a Versão 6

1.3 Duração: O Passatempo decorrerá entre o dia 8 e as 23h59 do dia 21 de Setembro de 2014.

Transcrição:

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados 2011/2012 Enunciado do 2 o Projecto Data de entrega: 11 de Novembro de 2011 às 23h59 1 Introdução O EuroMilhões é uma lotaria jogada actualmente em nove países europeus: Portugal, Espanha, França, Irlanda, Reino Unido, Aústria, Bélgica, Suíça e Luxemburgo. Embora a probabilidade de acertar na chave do primeiro prémio seja de apenas 1 em 116 531 800, o EuroMilhões é popular e apostas não faltam, apesar da crise. Para jogar aposta-se cinco números, que podem tomar valores de 1 a 50, e duas estrelas, que podem tomar valores de 1 a 11. Durante o sorteio, são extraídos automaticamente os cinco números e as duas estrelas, usando duas máquinas que contêm bolas numeradas de 1 a 50 e de 1 a 11, respectivamente. O prémio atribuído a cada jogador é diferente consoante a combinação obtida de números e estrelas. O montante disponível para prémios num dado concurso é distribuido por 13 prémios de acordo com a Tabela 1. Para ganhar o 1 o prémio o jogador tem que acertar os cinco números e as duas estrelas mas para ter direito ao 13 o prémio basta acertar dois números. Neste projecto pretende-se desenvolver um programa que manipule informação relativa a um concurso do EuroMilhões, nomeadamente o valor disponível para prémios, as apostas efectuadas e a chave premiada (5 números + 2 estrelas), e forneça informações sobre os resultados. Por questões de simplicidade considera-se que não há possibilidade de jackpot e não há apostas múltiplas. Considera-se ainda que as apostas são restritas aos nove países europeus que participam actualmente no EuroMilhões. 1

Tabela 1: Prémios e montante distribuido Prémio Acertos (números + estrelas) Distribuição 1 o Prémio 5 + 2 32.00% 2 o Prémio 5 + 1 4.80% 3 o Prémio 5 + 0 1.60% 4 o Prémio 4 + 2 0.80% 5 o Prémio 4 + 1 0.70% 6 o Prémio 4 + 0 0.70% 7 o Prémio 3 + 2 0.50% 8 o Prémio 3 + 1 2.30% 9 o Prémio 2 + 2 2.20% 10 o Prémio 3 + 0 3.70% 11 o Prémio 1 + 2 6.50% 12 o Prémio 2 + 1 17.60% 13 o Prémio 2 + 0 18.00% 2 Especificação do Programa O programa recebe como input informação acerca de um dado concurso do EuroMilhões: o montante disponível para distribuir em prémios de acordo com a Tabela 1; a chave premiada (5 números + 2 estrelas); o número de apostas; e detalhes de cada aposta (país onde foi registada, código e chave apostada). Pode receber ainda um número predeterminado de pedidos de informação acerca dos resultados por país. Os nove países são identificados usando os códigos seguintes: POR, ESP, FRA, IRL, GBR, AUT, BEL, SUI e LUX. O programa deverá apresentar no output, para cada um dos 13 prémios possíveis (do 1 o prémio ao 13 o prémio), a identificação do prémio, o montante disponível para distribuir pelos vencedores do prémio no concurso actual, o número de vencedores do prémio calculado com base nas apostas registadas no concurso e na chave vencedora, e o valor do prémio. Deverá ainda calcular o número de países distintos com apostas premiadas. Em resposta a um pedido de informação sobre um dado país, o programa deverá indicar o número de 1 o prémios, 2 o prémios,..., 13 o prémios distribuidos nesse país. Finalmente, deverá exibir uma lista das apostas premiadas ordenadas por prémio, e dentro de cada prémio ordenadas pelo código da aposta, isto é, lista de apostas que ganharam o 1 o prémio ordenadas por código de aposta, seguidas das apostas que ganharam o 2 o prémio ordenadas por código de aposta, etc. 2

3 Dados de Entrada O programa deverá ler os dados de entrada a partir do standard input. O formato será o seguinte: uma linha contendo um real M (M > 0) que indica o montante disponível para distribuir em prémios; uma linha contendo a chave premiada definida por 7 números inteiros separados por espaços: cinco números no intervalo [1, 50] e duas estrelas no intervalo [1, 11]; uma linha contendo um inteiro A (A 0) que indica o número de apostas registadas; uma sequência de A linhas, contendo informação relativa às A apostas registadas, em que cada uma tem o seguinte formato: código do país onde a aposta foi registada (sequência única de três caracteres) seguido de um espaço em branco; código da aposta (sequência única de seis digitos) seguido de um espaço em branco; 7 números inteiros correspondentes à chave apostada: 5 números no intervalo [1, 50] e duas estrelas no intervalo [1, 11] separados por espaços; uma linha com um número inteiro P (P 0) que indica o número de pedidos de informação acerca do número de prémios (do 1 o prémio ao 13 o prémio) que serão distribuidos num dado país tendo em conta as apostas registadas e a chave premiada; uma sequência de P linhas com os pedidos de informação e o seguinte formato: um caracter p seguido de um espaço em branco; o código do país (sequência única de três caracteres). Assuma que os dados de entrada para o programa não contêm erros sintácticos, isto é, obedecem sempre ao formato descrito nesta secção. 4 Dados de Saída O programa deverá escrever no standard output a seguinte informação: para cada um dos 13 prémios possíveis (do 1 o prémio ao 13 o prémio), uma linha com a informação seguinte separada por espaços: identificação do prémio (inteiro p no intervalo [1, 13]); montante disponível para o prémio p (real com duas casas decimais); número de vencedores do prémio p (inteiro); 3

valor do prémio p (real com duas casas decimais); número de países (distintos) com apostas premiadas; uma sequência de P linhas, onde cada linha corresponde à resposta a um dos P pedidos de informação efectuados no input e contém o número de 1 o prémios, 2 o prémios,..., 13 o prémios distribuidos separados por um espaço. A ordem das linhas do tipo p no input é respeitada no output. lista de apostas premiadas ordenadas por prémio, e dentro de cada prémio ordenadas pelo código da aposta, isto é, lista de apostas que ganharam o 1 o prémio ordenadas por código de aposta, seguidas das apostas que ganharam o 2 o prémio ordenadas por código de aposta, etc. 5 Exemplo 5.1 Dados de Entrada Suponha que o ficheiro de entrada, que designaremos por in.txt, tem o seguinte conteúdo: 100000.00 20 10 5 1 49 1 11 10 ESP 000001 20 10 5 1 49 1 10 IRL 000002 20 10 5 1 49 2 10 POR 000003 20 10 5 1 49 2 11 ESP 000004 20 10 5 1 2 1 11 POR 000005 20 10 5 1 49 1 11 FRA 000006 20 10 5 1 49 2 10 POR 000007 21 11 6 2 48 2 10 POR 000008 21 11 6 2 48 2 10 POR 000009 21 11 6 2 48 2 10 POR 000010 21 11 6 2 48 2 10 5 p POR p ESP p IRL p GBR p FRA 4

5.2 Dados de Saída Para o ficheiro de entrada in.txt descrito na secção anterior, o programa deverá escrever na saída a seguinte informação: 1 32000.00 1 32000.00 2 4800.00 2 2400.00 3 1600.00 2 800.00 4 800.00 1 800.00 5 700.00 0 0.00 6 700.00 0 0.00 7 500.00 0 0.00 8 2300.00 0 0.00 9 2200.00 0 0.00 10 3700.00 0 0.00 11 6500.00 0 0.00 12 17600.00 0 0.00 13 18000.00 0 0.00 4 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 000005 000001 000003 000002 000006 000004 6 Compilação do Programa O compilador a utilizar é o gcc com as seguintes opções de compilação: -ansi -Wall -pedantic. Para compilar o programa deve executar o seguinte comando: $ gcc -ansi -Wall -pedantic -o proj2 *.c o qual deve ter como resultado a geração do ficheiro executável proj2, caso não haja erros de compilação. A execução deste comando não deverá escrever qualquer resultado no terminal. Caso a execução deste comando escreva algum resultado no terminal, considera-se que o programa não compilou com sucesso. Por exemplo, durante a compilação do programa, o compilador não deve escrever mensagens de aviso (warnings). 5

7 Execução do Programa O programa deve ser executado da forma seguinte: $./proj2 < in.txt > out.txt 8 Entrega do Projecto A entrega do projecto deverá respeitar o procedimento seguinte: Na página da disciplina aceda ao sistema para entrega de projectos. O sistema será activado uma semana antes da data limite de entrega. Instruções acerca da forma de acesso ao sistema serão oportunamente fornecidas. Efectue o upload de um ficheiro arquivo com extensão.zip que inclua os ficheiros fonte (.c) e cabeçalho (.h) que constituem o programa. Para criar um ficheiro arquivo com a extensão.zip deve executar o seguinte comando na directoria onde se encontram os ficheiros com extensão.c e.h, criados durante o desenvolvimento do projecto: $ zip proj2.zip *.c *.h Como resultado do processo de upload será informado se a resolução entregue apresenta a resposta esperada num conjunto de casos de teste. O sistema não permite submissões com menos de 10 minutos de intervalo para o mesmo grupo. Exemplos de casos de teste serão oportunamente fornecidos. Data limite de entrega do projecto: 23h59 do dia 11 de Novembro de 2011. Até à data limite poderá efectuar o número de entregas que desejar, sendo utilizada para efeitos de avaliação a última entrega efectuada. Deverá portanto verificar cuidadosamente que a última entrega realizada corresponde à versão do projecto que pretende que seja avaliada. Não serão abertas excepções. 9 Avaliação do Projecto 9.1 Componentes da Avaliação Na avaliação do projecto serão consideradas as seguintes componentes: 1. A primeira componente avalia o desempenho da funcionalidade do programa realizado. Esta componente é avaliada entre 0 e 16 valores. 6

2. A segunda componente avalia a qualidade do código entregue, nomeadamente os seguintes aspectos: comentários, identação, estruturação, modularidade, abstracção, entre outros. Esta componente poderá variar entre -4 valores e +4 valores relativamente à classificação calculada no item anterior e será atribuída na discussão final do projecto. Durante a discussão final do projecto será averiguada a participação de cada elemento do grupo na realização do projecto, bem como a sua compreensão do trabalho realizado, sendo a respectiva classificação ponderada em conformidade, isto é, elementos do mesmo grupo podem ter classificações diferentes. Elementos do grupo que se verifique não terem participado na realização do respectivo projecto terão a classificação de 0 (zero) valores. 9.2 Atribuição Automática da Classificação A classificação da primeira componente da avaliação do projecto é obtida automaticamente através da execução de um conjunto de testes executados num computador com o sistema operativo GNU/Linux. Torna-se portanto essencial que o código compile correctamente e que respeite o formato de entrada e saída dos dados descrito anteriormente. Projectos que não obedeçam ao formato indicado no enunciado serão penalizados na avaliação automática, podendo, no limite, ter 0 (zero) valores se falharem todos os testes. Os testes considerados para efeitos de avaliação podem incluir (ou não) os disponibilizados na página da disciplina, além de um conjunto de testes adicionais. A execução de cada programa em cada teste é limitada na quantidade de memória que pode utilizar, até um máximo de 64 MBytes, e no tempo total disponível para execução, sendo o tempo limite distinto para cada teste. Note-se que o facto de um projecto passar com sucesso o conjunto de testes disponibilizado na página da disciplina não implica que esse projecto esteja totalmente correcto. Apenas indica que passou alguns testes com sucesso, mas este conjunto de testes não é exaustivo. É da responsabilidade dos alunos garantir que o código produzido está correcto. Em caso algum será disponibilizada qualquer tipo de informação sobre os casos de teste utilizados pelo sistema de avaliação automática. A totalidade de ficheiros de teste usados na avaliação do projecto serão disponibilizados na página da disciplina após a data de entrega. 9.3 Detecção de Cópias A avaliação dos projectos inclui a utilização de um sistema para detecção de situações de cópia entre projectos. A submissão de um projecto pressupõe o compromisso de honra que o trabalho incluso foi realizado única e exclusivamente pelos alunos referenciados nos ficheiros submetidos para avaliação. A quebra deste compromisso, ou seja a tentativa de um grupo se apropriar de trabalho de outrém (sejam colegas ou outra pessoa), tem como consequência a reprovação de todos os alunos envolvidos (incluindo quem possibilitar a ocorrência de cópias) à disciplina de IAED. Toda e qualquer situação de fraude ou facilitação de fraude terá então como consequência a reprovação imediata à disciplina de IAED neste semestre, assim como a comunicação da 7

ocorrência ao respectivo Coordenador de curso e ao Conselho Pedagógico do IST para sanções adicionais de acordo com as regras aprovadas pela UTL e publicadas em Diário da República. 9.4 Considerações adicionais Todos os programas são avaliados do modo seguinte: $./proj2 < in.txt > out.txt; diff out.txt exp.txt em que o ficheiro exp.txt representa o resultado esperado da execução do programa para os dados de entrada definidos pelo ficheiro in.txt. A impossibilidade de verificar automaticamente o resultado da execução de um dado programa implica uma penalização de 100% na componente de avaliação automática. Considera-se que um programa passou um teste com sucesso se o resultado produzido por esse programa for exactamente igual ao resultado esperado, o que significa que o comando diff não deverá encontrar diferenças entre o resultado produzido pelo programa submetido e o esperado. Para poder ser avaliado, um projecto deverá compilar correctamente num computador com o sistema operativo GNU/Linux, sendo o utilizado o compilador gcc da GNU. A entrega de código não compilável, ou a não inclusão de qualquer dos ficheiros requeridos, ou a utilização de nomes diferentes para o ficheiro executável conduz a uma classificação de 0 (zero) valores. Não serão aceites quaisquer justificações. 8