Curso: Ciência da Computação Disciplina: Algoritmos e Estrutura de Dados I Professora: Luciana Balieiro 3ª LISTA DE EXERCÍCIOS I - Observações 1) O trabalho é em grupo. É permitido discutir os problemas e estratégias de solução com os demais colegas, mas quando se tratar de escrever ou implementar computacionalmente as soluções, isto deve ser feito pelo grupo. 2) Forma de entrega: O trabalho deve ser entregue via e-mail. O assunto deve ser "Entrega do TP3". Anexe um único arquivo .zip contendo todos os arquivos do trabalho, documentos e códigos. O nome do arquivo zip deve ser: PrimeiroNome_ÚltimoNome.zip. (do líder, do 1º período, e deve conter um arquivo texto com o nome de toda equipe). 3) Data limite para entrega: 07/04/2014 II – Tarefas ESTRUTURAS DE REPETIÇÃO 1. Faça um programa para exibir todos os números inteiros divisíveis por 4, maiores ou iguais a 1050 e menores ou iguais a 2400. 2. Desenvolva um programa que encontre os dois maiores valores dos 10 números. Nota: você deve fornecer cada número como entrada somente uma vez, ou seja, não haverá números repetidos. 3. Escreva um programa que imprime os múltiplos do inteiro 2, ou seja, 2, 4, 8, 16, 32, 64, etc. Seu laço não deve terminar (você deve criar um laço infinito). O que acontece quando você executa este programa? 4. Escreva um programa que calcula e imprime o produto dos inteiros ímpares de 1 até 15. 5. A sequência abaixo é conhecida como série de Fibonacci. Faça um programa para escrever esta série até o termo informado pelo usuário. Série de Fibonacci: 1,1,2,3,5,8,13,21,34,55... 6. O máximo divisor comum de dois inteiros é o maior número que divide ambos sem deixar resto. Escreva um programa que dados dois inteiros positivos (ou seja, maiores que zero) e calcula o seu máximo divisor comum. OB2: O programa só deve aceitar valores maiores que zero. 7. A função fatorial é freqüentemente usada em problemas de probabilidade. O fatorial de um inteiro positivo n é igual ao produto dos inteiros positivos de 1 até n. Escreva um programa que calcula os fatoriais dos inteiros de 1 até 5. Imprima o resultado em formato de tabela. Que dificuldade pode lhe impedir de calcular o fatorial de 20? 8. Faça um programa que permita que o usuário digite uma string (com espaços) de até 80 caracteres. O programa deve permitir que o usuário digite também o caractere a ser encontrado. A saída deverá ser quantos caracteres (do solicitado pelo usuário) existem dentro da string também digitada pelo usuário. Exemplo: - Digite uma string com até 80 caracteres: blablabla - Digite um caractere que deseja encontrar na string acima digitada: a (saída do programa) = Existem 3 caracteres 'a' na string "blablabla". 9. Existem números de 4 dígitos (entre 1000 e 9999) que obedecem à seguinte característica: se dividirmos o número em dois números de dois dígitos, um composto pela dezena e pela unidade, e outro pelo milhar e pela centena, somarmos estes dois novos números gerando um terceiro, o quadrado deste terceiro número é exatamente o número original de quatro dígitos. Por exemplo: 2025 -> dividindo: 20 e 25 -> somando temos 45 -> 452 = 2025. Escreva um programa para calcular todos os números que obedecem a esta característica. 10. Escreva um programa que lê um inteiro e calcula a raiz quadrada (aproximada) deste valor. O cálculo do valor da raiz quadrada deve ser feito usando o seguinte método: a) tendo x como o número do qual se quer achar a raiz quadrada, deve-se propor um número qualquer n como primeira possibilidade (tente algo como n=x/2); b) se |x - n2| for menor do que um erro tolerável, no nosso caso 0,05, assuma n como a raiz aproximada; senão, gere um novo n, com o valor igual à média aritmética entre n e x/n. 11. Faça um programa que mostre o valor de Y na seguinte função: Y = 4X + 3 para X variando de -7 até 15. 12. Um número inteiro é considerado triangular se este for o produto de três números inteiros consecutivos, como, por exemplo, 120 = 4 x 5 x 6. Elabore um programa que, após ler um número n, verifique se o mesmo é ou não triangular. 13. O número π pode ser calculado por meio da série infinita: π = 4( 1 – 1/3 + 1/5 – 1/7 + 1/9 – 1/11 + 1/13 - ...) Elabore um programa que calcule e exiba o valor do número π, utilizando a série anterior, até que o valor absoluto da diferença entre o número calculado em uma iteração e o da anterior seja menor ou igual a 0.00000000005. VETORES E MATRIZES 14. Elabore um programa que calcule e exiba a diferença entre o maior e o menor elemento de um vetor denominado Valores (com N elementos), tanto o número de elementos quanto o conteúdo do vetor são valores lidos. 15. Construa um programa para efetuar a soma de todos os elementos de índice par de um vetor de tamanho N. 16. Crie um programa que calcule e exiba o desvio médio (DM) de um vetor x com n elementos. Tanto o número de elementos quanto o conteúdo do vetor são valores lidos. Fórmulas: 𝑥= 𝑛 𝑖=1 𝑥𝑖 𝑛 𝑥𝑖 − 𝑥 𝑛 𝑛 𝑖=1 𝐷𝑀 = 17. Componha um programa que faça um deslocamento à esquerda de tamanho m vezes (m lido via teclado) em um vetor v de inteiros de tamanho n (n lido via teclado). Por exemplo, a figura abaixo apresenta um vetor de tamanho 5, no qual se realiza um deslocamento de tamanho 3. -3 7 11 0 8 1 2 0 8 -3 7 11 1 2 3 4 6 3 4 6 18. Escreva um programa que leia uma matriz 10 x 10 elementos inteiros. Encontre e mostre o menor elemento e a sua posição na matriz, e o menor elemento e sua posição por linha. 19. Na teoria dos sistemas, define-se como elemento minimax de uma matriz o menor elemento de uma linha onde se encontra o maior elemento da matriz. Faça um programa que recebe, por parâmetro, uma matriz A(10,10) e retorna o seu elemento minimax. 20. Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais. Exemplo: 8 𝐴= 4 3 0 5 10 7 6 2 A matriz A é um quadrado mágico. Dada uma matriz quadrada A n x n, verificar se A é um quadrado mágico. PROBLEMAS ADICIONAIS O site URI Online Judge contém mais de 500 problemas divididos em oito grandes categorias. Essa divisão ajuda os usuários a se concentrar em temas específicos de programação. Seguem os problemas a serem submetidos ao site, por todas as equipes. Todos da equipe devem criar seu perfil e resolver pelo menos um dos problemas abaixo. O código fonte deve ser enviado junto com os outros exercícios. Também deve ser enviada a lista com o nome de usuários cadastrados no site. http://www.urionlinejudge.com.br/judge/pt/problems/view/1072 http://www.urionlinejudge.com.br/judge/pt/problems/view/1080 (Não é permitido utilizar vetores) http://www.urionlinejudge.com.br/judge/pt/problems/view/1099 http://www.urionlinejudge.com.br/judge/pt/problems/view/1134 http://www.urionlinejudge.com.br/judge/pt/problems/view/1179 Cada membro da equipe deve escolher um problema adicional do site e resolvê-lo. O problema deve ter, no mínimo, uma estrutura de repetição.