Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO Rua Dom Manoel de Medeiros, s/n – Dois Irmãos 52171-‐900 Recife-‐PE Fone: 0xx-‐81-‐332060-‐40 proreitor@preg.ufrpe.br Lista de Desafios Este documento apresenta uma série de desafios para serem implementados como exercícios em disciplinas de linguagem de programação. Ao mesmo tempo que constitui um exercício de programação, serve para preparar os alunos para olimpíadas ou maratonas de programação, cujos enunciados são apresentados de forma idêntica aos desafios deste documento. São apresentados dez desafios de nível fácil. Palavras-chaves: Programação; Lista de Exercícios. ABSTRACT This document presents a set of problems to be implemented as exercises in programming language disciplines. At the same time that it constitutes an exercise of programming, it serves to prepare the students for programming contests, whose definitions are presented in the same manner of the problems of this document. Ten easy level problems are presented. Key-words: Programming; Exercise List. 1 FATORIAL O fatorial de um número x é indicado por x! e corresponde ao produto de todos os números naturais de 1 até x. Por definição, assume-se que 0! e 1! sejam ambos iguais a 1. Na Figura 1 é possível ver alguns exemplos de cálculo de fatorial. A definição de fatorial pode também ser apresentada usando o conceito de recursividade. Ou seja, o fatorial de x pode ser definido como x multiplicado pelo fatorial de x-1: x! = x.(x-1)!. 0! = 1 1! = 1 2! = 1.2 3! = 1.2.3 4! = 1.2.3.4 ... 10! = 1.2.3.4.5.6.7.8.9.10 ... x! = 1.2.3.4.5. ... .(x-2).(x-1).x Figura 1 - Exemplos de cálculo de fatorial 1.1 Desafio Seu desafio é escrever um programa em C que lê um número inteiro N correspondente ao 2 número de valores inteiros que serão fornecidos e, a seguir, calcula o fatorial de cada um destes inteiros. 1.2 Entrada O primeiro valor que deve ser lido da entrada é o número de valores inteiros (N) para os quais se deseja calcular o fatorial. A seguir são fornecidos N valores inteiros. Cada valor inteiro Xi (1 i N ) varia de 0 até 20 (inclusive). A Figura 2 apresenta um exemplo de entrada. 4 0 1 3 5 Figura 2 – Exemplo de entrada 1.3 Saída A saída corresponde aos fatoriais dos N números inteiros lidos na entrada, impressos cada um em uma linha como um número real com seis casas decimais. A saída esperada para a entrada da Figura 2 é mostrada na Figura 3. 1.000000 1.000000 6.000000 120.000000 Figura 3 – Saída esperada para o exemplo de entrada 1.4 Restrições Nas entradas fornecidas: N é um inteiro sem sinal e pode variar de 0 a 1.000 (inclusive); Xi (1 i N ) é um inteiro sem sinal e pode variar de 0 a 20 (inclusive). 2 IMPRESSÃO EM BINÁRIO O sistema de numeração binário, que representa valores usando apenas os dígitos 0 e 1, tem um papel de destaque no processamento de dados pelo computador. Isto se dá basicamente em função de que, no nível mais baixo e mais interno de um computador, toda a informação é formada por uma seqüência de bits que podem assumir apenas dois valores, por conveniência, representados por 0 e 1. O sistema binário é, portanto, composto de dois símbolos ou dígitos: 0 e 1. Sua base é 2, o que significa que as várias posições que um dígito pode assumir têm pesos que podem ser expressos em potências de 2. Por exemplo, os números a seguir em binário representam as quantidades definidas pelas respectivas expressões: 1100 = 1.23 + 1.22 + 0.21 + 0.20 = 12 10100011 = 1.27 + 0.26 + 1.25 + 0.24 + 0.23 + 0.22 + 1.21 + 1.20 = 163 2.1 Desafio Seu desafio é escrever um programa que lê um número N, correspondente ao número de entradas que serão fornecidas. E, para cada entrada, que corresponde a um número inteiro, o seu programa deve imprimir a sua representação em notação binária de 16 bits. 3 2.2 Entrada O primeiro valor que deve ser lido da entrada é o número de valores inteiros (N) para os quais se deseja conhecer a representação binária. A seguir são fornecidos N valores inteiros. Cada valor inteiro Xi (1 i exemplo de entrada. 3 5 –1 127 N ) varia de -32.768 até 32.767 (inclusive). A Figura 4 apresenta um Figura 4 – Exemplo de entrada 2.3 Saída A saída corresponde às representações binárias dos N números inteiros lidos na entrada, impressos cada um em uma linha com 16 dígitos binários. A saída esperada para a entrada da Figura 4 é mostrada na Figura 5. 0000000000000101 1111111111111111 0000000001111111 Figura 5 – Saída esperada para o exemplo de entrada 2.4 Restrições Nas entradas fornecidas: N é um inteiro sem sinal e pode variar de 0 a 40.000 (inclusive); Xi (1 i N ) é um número inteiro e pode variar de –32.768 a 32.767 (inclusive). 3 CONTAGEM O resto inteiro de uma divisão (operador % da linguagem C ou MOD da linguagem Pascal) é uma operação aritmética muito útil quando se deseja descobrir características de determinado número. Para os números pares, o resto inteiro de sua divisão por 2 será igual a 0. Para os ímpares, o resto inteiro de sua divisão por 2 será igual a 1. Pode-se também usar o resto inteiro da divisão para verificar se um número é divisor de outro: se o resto inteiro da divisão de p por q for igual a 0, então q é divisor de p. Determinando todos os divisores de um número, pode-se ainda verificar se o número é primo ou perfeito. Um número primo é aquele que tem como divisores apenas a unidade (1) e o próprio número. Neste desafio considera-se que 1 seja primo, por definição. 3.1 Desafio Seu desafio é fazer um programa que leia números inteiros positivos até que o valor 0 seja lido. Depois que o programa tiver lido o valor 0, deverá imprimir um relatório informando: o número de valores pares, ímpares e primos lidos. 3.2 Entrada A entrada é formada por uma série de números inteiros positivos maiores do que 0. O final da entrada é sinalizado pelo número 0. Ou seja, deve-se ler valores até que o número zero seja lido. 4 A Figura 6 apresenta um exemplo de arquivo de entrada. 1 2 3 4 5 6 7 8 9 10 0 Figura 6 – Exemplo de entrada 3.3 Saída A saída corresponde à contabilização do número de valores pares, ímpares, primos e perfeitos encontrados na entrada, apresentando-se, em linhas separadas, as expressões: “ Pares:” , seguida de um espaço em branco e do número total de valores pares; “ Impares:” (sem acento), seguida de um espaço em branco e do número total de valores ímpares; “ Primos:” , seguida de um espaço em branco e do número total de valores primos; A Figura 7 apresenta um exemplo de saída esperada (no caso, a saída esperada para a entrada da Figura 6). Pares: 5 Impares: 5 Primos: 5 Figura 7 – Saída esperada para o exemplo de entrada 4 NÚMERO DE RAÍZES REAIS Uma equação do segundo grau, que tem a forma ax 2 bx c , pode ter duas, uma ou nenhuma raiz real. Pode-se verificar o número de raízes reais calculando-seo valor de b 2 4ac . Se for maior do que 0, a equação tem duas raízes reais. Se for igual a 0, tem uma única raiz. Se for menor do que 0, então a equação não tem nenhuma raiz real. 4.1 Desafio Faça um programa que leia um conjunto de coeficientes de raízes de equações do segundo grau e calcule o número de raízes que as respectivas equações apresentam. O programa deve ler coeficientes até que seja lido um conjunto de coeficientes em que a primeira incógnita seja igual a zero. Todos os coeficientes lidos correspondem a valores reais. 4.2 Entrada A entrada é formada por uma série de coeficientes reais de equações do segundo grau. Cada conjunto de coeficientes possui três incógnitas que são colocadas numa mesma linha. O final da entrada é sinalizado por um conjunto com três incógnitas em que a primeira incógnita é igual a 0. A Figura 8 apresenta um exemplo de arquivo de entrada. 1.0 0 -4.0 1.0 2.0 3.0 1.0 4.0 4.0 0 0 0 Figura 8 – Exemplo de entrada 4.3 Saída A saída corresponde ao número de raízes de cada uma das equações do segundo grau especificadas na entrada, apresentadas em linhas separadas. A Figura 9 mostra um exemplo de 5 saída esperada (no caso, a saída esperada para a entrada da Figura 8). 2 0 1 Figura 9 – Saída esperada para o exemplo de entrada 4.4 Restrições Nas entradas fornecidas: não há limitação para o número de equações a serem testadas; os valores das incógnitas podem ser armazenados em variáveis reais disponíveis em qualquer linguagem de programação. RESPOSTAS DEVEM SER ENVIADAS ATRAVÉS DP FORMULÁRIO ABAIXO: http://xjulio.org/forms/view.php?id=21056
Compartilhar