II MARATONA DE PROGRAMAÇÃO IFSP SÃO CARLOS. Caderno de Tarefas. 25 de outubro de 2012

Documentos relacionados
I OLIMPÍADA DE ALGORITMO IFSP SÃO CARLOS. Caderno de Tarefas. 19 de outubro de 2011

OBI2016 Caderno de Tarefas

OBI2017 Caderno de Tarefas

Simulado OBI2018 Caderno de Tarefas

Simulado OBI2018 Caderno de Tarefas

Simulado OBI2018 Caderno de Tarefas

MODALIDADE PROGRAMAÇÃO 1ª FASE

ENSINO MEDIO REGULAMENTO

ENSINO SUPERIOR REGULAMENTO

OBI2016 Caderno de Tarefas

OBI2012 Caderno de Tarefas

1ª LISTA DE EXERCÍCIOS

OBI2015 Caderno de Tarefas

OBI2016 Caderno de Tarefas

2ª Mini-Maratona de Programação IF Goiano CA Cristalina

PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15

OBI2016 Caderno de Tarefas

OBI2014 Caderno de Tarefas

Disciplina de Algoritmos e Programação. Vetor e Matriz

Linguagem de Programação C

OPI Modalidade Programação. Fase 1

OBI2016 Caderno de Tarefas

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior

Aula 4 Introdução ao C

OBI2012 Caderno de Tarefas

Programação Básica. Estrutura de um algoritmo

Capítulo 2 Operadores. A função scanf()

Exercícios: Vetores e Matrizes

Algoritmos e Programação

3.1 - Funções para manipular dados de entrada e saída padrão

28/09/2017 RPG. O que é? O que sempre tem? Cuidados: Critérios de avaliação do programa de RPG. Exemplo de mapa

PROBLEMA A: SINUCA. Cor: Roxo. Nomes dos Arquivos. Arquivo-fonte: sinuca.c, etc Arquivo de entrada: sinuca.in Arquivo de saída: sinuca.

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

LISTA DE EXERCÍCIOS 2

CCO 016 / COM 110 Fundamentos de Programação

Questão 1 Exemplo de execução 1 (com N=6): Exemplo de execução 2 (com N=4):

DURAÇÃO DA PROVA: 2 horas

Seleção de Problemas:

Treinamento Olimpíada Brasileira de Informática

BCC701 Programação de Computadores I Lista de Exercícios 05: Funções Definidas pelo Usuário

OBI2012 Caderno de Tarefas

Programação de Computadores IV. Estruturas de repetição Slides cedidos por Bruno Augusto Dorta Marques

Linguagem C Entrada/Saída (console)

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Algoritmo e Programação Matemática

ESTRUTURA HOMOGÊNEA: VETORES/ARRAYS

MAC110 Introdução à Computação EP no. 3 Prof. Dr. Paulo Miranda Instituto de Matemática e Estatística (IME) Universidade de São Paulo (USP)

Computação Eletrônica

CCO 016 Fundamentos de Programação

Sub-algoritmos (ou Funções)

Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves

Role Playing Game (Jogo de Interpretação de papéis). Jogadores são personagens da história.

15/03/2018. Professor Ariel da Silva Dias Paradigma Imperativo

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

II TORNEIO DE PROGRAMAÇÃO

Aula 15 - Estruturas de Repetição (p3)

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

TecnoFacens ª Maratona de Modelagem e Simulação de Eventos Discretos

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Técnicas de Programação Avançada Trabalho de implementação

Fundamentos de Programação

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Universidade Federal do Espírito Santo - CT - DI Trabalho Computacional - PD II - Engenharia de Computação Profa. Claudia Boeres

algoritmo "exercício 5" var x, y, aux: inteiro inicio escreva ("Entre com um valor inteiro p/ variável x: ") leia (x) escreva ("Entre com um valor

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Caderno de Problemas

Para começar... Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Comando REPITA (repeat) Comando REPITA (repeat)

Backtracking. Pequenos Bispos

Introdução a Computação

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Programação Estruturada

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Lista de Exercícios Estruturas: Linear, Condicional e Exclusão Múltipla Algoritmos e Linguagens de Programação

Unidade 10: Estruturas de Decisão Compostas Prof. Daniel Caetano

Pseudocódigo Exercício 6

Estruturas de Repetição WHILE e DO- WHILE

3ª Lista de Exercícios de Programação I

Introdução à Programação

Não utilize caracteres acentuados ou especiais para nomes de pastas e arquivos.

Unidade 4: Introdução à Lógica de Programação - Parte II

Capítulo 1-Sistemas de Coordenadas, Intervalos e Inequações

Variáveis, Tipos de Dados e Operadores

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Caderno de Exercícios Aula 2 (Variáveis, Tipos e Comandos Básicos)

Departamento de Informática - PUC-Rio INF 1005 Programação 1 P1 26/04/2010

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

Algoritmos e Programação

1ª Lista de Exercícios

Entrada e Saída. Aula 02

Primeira Parte do Trabalho Prático (Parte I) Valor: 30% Descrição do arquivo de dados

INFORMÁTICA PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II

Linguagem C Estruturas de Repetição

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

Pseudocódigo Exercício 6

Exercícios Repetição

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Sexta Aula Prática - 28 de abril de 2011

Transcrição:

II MARATONA DE PROGRAMAÇÃO IFSP SÃO CARLOS Caderno de Tarefas 25 de outubro de 2012 Patrocínio: Realização: 1

INSTRUÇÕES: Este caderno de tarefas é composto por 5 tarefas divididas em 12 páginas. Verifique se o caderno está completo. É proibido o uso de notebook, celular, smartphone, tablet, pendrive, livros, revistas e qualquer outro material ou equipamento eletrônico que possa conceder alguma vantagem e/ou ajuda em relação a prova. O acesso à internet não será permitido. Atente ao nome do código fonte exigido para cada tarefa. As tarefas foram separas em dois níveis de dificuldade: fácil e difícil. As tarefas de nível fácil têm um valor de 100 pontos e penalidade de 10 pontos para cada submissão errada. As de nível difícil têm um valor de 200 pontos e penalidade de 20 pontos para cada submissão errada. Todos os dados devem ser lidos através da entrada padrão (teclado) e escritos na saída padrão (monitor). Por exemplo: read, readln, write e writeln em Pascal e scanf, printf, getchar e putchar em C. Após concluído o algoritmo a equipe deverá submeter o código fonte para avaliação e testes. A partir deste momento a tarefa será avaliada pela banca e a equipe poderá começar a resolução de outra. Concluído o processo de testes a equipe será avisada se a tarefa está correta ou não. Caso não, a equipe poderá tentar novamente. Haverá um quadro de classificação onde os participantes poderão acompanhar o tempo de prova e o número de tarefas submetidas por cada equipe. A classificação final se dará pelo número de pontos ao final do tempo de prova. Em caso de empate será adotado os seguintes critérios: número de tarefas resolvidas, número de submissões erradas, horário da última submissão. Tempo de duração: 3 horas. 2

Bolsa de valores Arquivo fonte: bolsa.pas ou bolsa.c Valor desta tarefa: 100 pontos. Penalidade: 10 pontos. Carlos trabalha na bolsa de valores e é responsável por gerenciar compras e vendas das ações de diversos empresários. Para melhor gerenciar essas transações, Carlos contratou você para fazer um programa capaz de gerar um relatório de movimentação das ações. 1. Tarefa Sua tarefa é desenvolver um programa que dado a quantidade de ações movimentadas e o horário de movimentação das mesmas seja capaz de gerar um relatório com o número de total de movimentações dentre um determinado espaço de tempo. 2. Entrada A entrada é composta por um conjunto linhas. Cada linha representa uma movimentação e é composta por um número inteiro Q representando a quantidade de ações movimentadas e dois inteiros H e M indicando a hora e minuto da movimentação respectivamente. O final das entradas das movimentações se da por Q = 0. Após as entradas de movimentações será feito mais duas linhas de entrada. Cada uma delas contendo dois inteiros H e M representando também a hora e minuto em que se deseja obter o relatório. Exemplo de entrada: 150 14 35 225 15 30 530 15 42 425 16 22 125 17 20 0 0 0 15 30 16 30 3. Saída Seu programa deve gerar uma única linha de saída contendo o número total de ações movimentadas dentro do período solicitado. Exemplo de saída (corresponde ao exemplo de entrada acima): 3

1180 4. Considerações 0 < Q <= 1000 (0 apenas para indicar final da entrada) 0 <= H < 24 0 <= M < 60 4

Caixa eletrônico Arquivo fonte: caixa.pas ou caixa.c Valor desta tarefa: 100 pontos. Penalidade: 10 pontos. Um novo banco está se instalando no condado de Ibaté e precisa fixar um caixa eletrônico para seus clientes. Para isso ele contratou seus serviços para desenvolver o software que será usado no caixa eletrônico. 1. Tarefa Sua tarefa será desenvolver um programa que leia o valor desejado para o saque e mostre a quantidade de cada nota que deverá ser entregue ao cliente de forma a minimizar o número de notas entregues. O caixa eletrônico possui apenas notas de R$ 50, R$ 20, R$ 10, R$ 5 e R$ 1. 2. Entrada A entrada é composta vários saques. Cada saque possui um número inteiro V que representa o valor solicitado para o saque. O final da entrada é indicado por V = 0. Exemplo de entrada: 13 55 342 0 3. Saída Para cada saque seu programa deve gerar uma linha de saída contendo cinco inteiros I, J, K, L e M representando, respectivamente, a quantidade de notas de 50, 20, 10, 5 e 1 entregue ao cliente. Exemplo de saída (corresponde ao exemplo de entrada acima): 0 0 1 0 3 1 0 0 1 0 6 2 0 0 2 4. Considerações 0 <= V <= 10000 5

Diferença entre Datas Arquivo fonte: data.pas ou data.c Valor desta tarefa: 100 pontos. Penalidade: 10 pontos. Cleovaldo é um jovem muito nerd que adora assistir aos programas da National Geographic. Um dia viu uma reportagem que falava das profecias sobre o fim do mundo. Uma delas é a profecia sobre o calendário Maia, onde diz que o mundo terá fim no ano de 2012, mais precisamente no dia 21 de dezembro de 2012. Muito preocupado com a chegada desses dias, Cleovaldo pediu para você fazer um programa que diga a quantidade de dias de vida que lhe restam e assim poder se planejar para realizar todos seus objetivos enquanto vivo. 1. Tarefa Sua tarefa será desenvolver um programa que, dado o dia, mês e ano de duas datas distintas, calcule a diferença em dias entre elas. 2. Entrada A entrada será composta de duas linhas. Cada uma contendo três inteiros que representam o dia, mês e ano de cada data, respectivamente. Lembrando que os meses de janeiro a dezembro têm respectivamente a seguinte quantidade de dias: 31, 28 (29 para ano bissexto), 31, 30, 31, 30, 31, 31, 30, 31, 30 e 31. Último ano bissexto: 2008. Exemplos de entrada: 10 5 2005 11 5 2005 10 10 2010 25 10 2011 3. Saída Ao final das entradas, imprima uma única linha contendo um inteiro representando o número de dias entre as duas datas. Exemplos de saída (corresponde aos exemplos de entrada acima): 1 380 6

4. Considerações 1 <= dia <= 31 1 <= mês <= 12 1900 <= ano <= 2999 (formato AAAA - com quatro dígitos) data1 < data2 (a segunda data será sempre maior que a primeira) 7

Jogo de Multiplicar Arquivo fonte: multiplicar.pas ou multiplicar.c Valor desta tarefa: 200 pontos. Penalidade: 20 pontos. Em um reino havia dois grande matemáticos Euclides e Fermat, que sempre disputavam para saber quem era o melhor. Para resolver esse dilema o rei propôs o jogo da multiplicação. Que funcionava de acordo com as regras: Euclides e Fermat deveriam multiplicar um número inteiro p por um número de 2 a 9. Euclides sempre começava com p = 1, fazia a sua multiplicação e então Fermat multiplicava o resultado por um número entre 2 e 9, depois novamente o Euclides, e assim por diante. Antes do jogo começar o rei sugeria um inteiro com valor entre 1 < n < 60000 e o vencedor era quem chegasse primeiro a p >= n. 1. Tarefa Assumindo que os dois matemáticos jogavam de modo perfeito, você o mago da corte deverá construir um programa que mostrará quem será o vencedor da batalha conforme o número fornecido pelo rei. Mostrando a todos que a sua magia é bem mais poderosa que a matemática deles. 2. Entrada A entrada se dará por um conjunto de teste. Cada teste é composto por uma linha de entrada contendo um número inteiro n que representa um número dado pelo rei. Quando n for igual a 0 (zero) indica o fim de entradas. Exemplo de entrada: 162 17 500 0 3. Saída Para cada entrada deverá ter uma saída dizendo o nome do matemático vencedor. Exemplo de saída (corresponde ao exemplo de entrada acima): Euclides Fermat Euclides 8

4. Considerações 1 < n < 60000 II MARATONA DE PROGRAMAÇÃO - IFSP SÃO CARLOS 9

Jogo de RPG Arquivo fonte: jogo.pas ou jogo.c Valor desta tarefa: 200 pontos. Penalidade: 20 pontos. Você sabia que antes mesmo de inventarem as interfaces gráficas já existiam jogos para computador? Muitos deles são bem famosos como os de RPG (role-playing game). Esses eram jogados através de ações específicas pela linha de comando, a famosa tela preta. 1. Tarefa Sua tarefa será desenvolver um jogo que dado as coordenadas X e Y do plano cartesiano, controle os passos de um ou mais personagem pelo mapa através de comandos de direção específicos. O mapa poderá conter portais de teletransporte que irão redirecionar o personagem para um outro ponto do mapa. E também árvores que não podem ser atravessadas pelo personagem. Exemplo: se houver uma árvore na coordenada 51,60 e um personagem na coordenada 50,60 e for dado um comando para o mesmo se mover para a direita, a ação deve ser desconsiderada e o personagem continua na mesma posição. O mesmo aplica-se a coordenadas em que outros personagens estejam ocupando. 2. Entrada A primeira entrada será um número inteiro N que representa o número de personagens que o seu jogo deve controlar os passos. As N linhas seguintes serão as coordenadas iniciais X e Y dos personagens. A seguinte entrada será outro número inteiro M que irá representar a quantidade de árvores espalhadas pelo mapa. As M linhas seguintes serão dois inteiros representando as coordenadas X e Y dessas árvores. A próxima entrada será um número inteiro J que será a quantidade de portais no mapa. As J linhas seguintes será composta por quatro inteiros representando as coordenadas X e Y dos portais e coordenadas X e Y dos pontos para onde os mesmos redirecionarão os personagens, respectivamente. As entradas seguintes serão strings S representando a direção que o personagem deve seguir. São elas: norte, sul, leste e oeste as quais devem fazer o personagem se mover para cima (Y-1), baixo (Y+1), direita (X+1) e esquerda (X-1) respectivamente. O programa deve ler os comandos de direção até que seja passada a palavra fim indicando o fim das entradas. Se houver mais que um personagem as entradas de direção se dará em ordem para cada um deles. Por exemplo: se houver dois personagens a primeira entrada de direção será para o primeiro personagem, a segunda entrada para o segundo personagem, a terceira para o primeiro personagem novamente e assim por diante. 10

Representação gráfica do exemplo de entrada abaixo. Exemplo de entrada: 2 //quantidade de personagens 41 31 //coordenada inicial do primeiro personagem 51 32 //coordenada inicial do segundo personagem 3 //quantidade de árvores 41 33 //coordenada da primeira árvore 46 31 //coordenada da segunda árvore 48 32 //coordenada da terceira árvore 1 //quantidade de portais 52 31 51 33 //coordenada do portal e ponto de redirecionamento sul //comando de direção para o primeiro personagem norte //comando de direção para o segundo personagem sul //comando de direção para o primeiro personagem leste //comando de direção para o segundo personagem leste //comando de direção para o primeiro personagem oeste //comando de direção para o segundo personagem fim //fim das entradas 3. Saída A saída deverá ser uma linha para cada personagem (seguindo a ordem de entrada) contendo as coordenadas X e Y das atuais posições do mesmo. Exemplo de saída (corresponde ao exemplo de entrada acima): 42 32 //coordenada final do primeiro personagem 50 33 //coordenada final do segundo personagem 11

4. Considerações II MARATONA DE PROGRAMAÇÃO - IFSP SÃO CARLOS 1 <= N <= 100 0 <= M <= 100 0 <= J <= 100 1 <= X <= 999 1 <= Y <= 999 S = norte, sul, leste, oeste ou fim (string sem espaços) Considere também que as coordenadas iniciais dos personagens, árvores e portais são distintas. Um portal nunca irá redirecionar o personagem para outro portal, coordenada de uma árvore ou de outro personagem. 12