Laboratório de Programação Atividade de maio– de junho de Ciência da Computação Prof. Leandro Zatesko • Os programas devem ser todos desenvolvidos em C. • As leituras e as impressões devem ser feitas todas através dos dispositivos padrões de entrada e saída. • As únicas bibliotecas que podem ser incluídas nos códigos são stdio.h, stdlib.h, math.h e time.h. Se precisar manipular strings, crie você mesmo funções para tanto. Nível Exercício . Faça um programa que lê um número natural n e imprime n!. Exercício . Faça um programa que lê uma sequência de números inteiros positivos, seguida por zero, e imprime o máximo dos números lidos. Exercício . Faça um programa que lê uma sequência de números inteiros não-nulos, seguida por zero, e imprime a soma dos números pares lidos e a soma dos ímpares. Exercício . Faça um programa que lê um número natural n de alunos e um natural p e imprime o número de quantos modos distintos é possível agrupar os n alunos em equipes com p alunos. Exercício . Faça um programa que lê um natural n e imprime o resultado de S(n) = + + + + + ··· + ! ! ! ! ! n! Teste seu programa para vários valores de n. Tente trabalhar com bastante precisão. Lembre-se também de imprimir o resultado com mais casas de precisão. Tente por fim descobrir o maior valor de n que ainda faz diferença na precisão estipulada. Você reconhece o resultado? O que você pode conjecturar sobre S(n) quando n → +∞? Pesquise na Internet sobre isso. Exercício . Faça um programa que lê caracteres da entrada padrão até o caracter # e imprime a metade do número formado por todos os algarismos digitados. Exemplos de entrada Bom dia! Hoje eu acordei, tomei café, comi bolachas, perdi o ônibus e paguei reais em táxi. # Vou rezar / para achar / para te levar para / # # Saídas correspondentes . . . Nível Exercício . Faça um programa que lê um natural n e, utilizando o Crivo de Erastótenes, imprime todos os números primos no intervalo [..n]. Cuidado! Para n muito grande, seu programa pode demorar muito, muito tempo. Exercício . Dois números primos são dito consecutivos quando a diferença entre eles é no máximo dois. Por exemplo, são pares de números consecutivos: e ; e ; e ; e ; e . Faça um programa que lê um natural n e imprime todos os pares de primos consecutivos no intervalo [..n]. Exercício . Sendo x um número real, usamos π(x) para denotar a quantidade de números primos (positivos, claro) no máximo x. O Teorema dos Números Primos diz que π(x) ∼ x . ln x Segundo essa aproximação, por exemplo, temos que há cerca de primos no intervalo [.. − ]. Na realidade, há primos. Note-se ainda que o próprio − é um dos primos! Faça um programa que lê um número n e imprime π(x) e lnxx , para fazer a comparação entre os resultados. Nível Exercício . duto delas. Faça um programa que lê duas matrizes (não necessariamente quadradas) e imprime o pro- Exercício . Faça um programa que lê um natural n e imprime as n primeiras linhas do Triângulo de Pascal. Exercício . Faça um programa que lê um caça-palavras e uma palavra e imprime a posição onde a palavra pode ser encontrada no caça-palavras, além da direção que se deve considerar (N, NE, E, SE, S, SW, W, NW). Nível Exercício . Faça um programa que lê um natural n e imprime com caracteres ASCII a resolução do problema das Torres de Hanói para n discos. Exemplos de entrada Saídas correspondentes +-+ | | +---+ | | +-----+ | | _________ _________ _________ +---+ | | +-----+ +-+ | | | | _________ _________ _________ +-----+ +---+ +-+ | | | | | | _________ _________ _________ +-+ | | +-----+ +---+ | | | | _________ _________ _________ +-+ | | +---+ +-----+ | | | | _________ _________ _________ +-+ +---+ +-----+ | | | | | | _________ _________ _________ +---+ | | +-+ +-----+ | | | | _________ _________ _________ +-+ | | +---+ | | +-----+ | | _________ _________ _________ Nível Exercício . Faça um programa que lê um labirinto de dimensões n × m (n e m fornecidos no começo da entrada) composto apenas pelos seguintes caracteres: • # (indica um muro); • (espaço em branco, indica um corredor livre); • r (indica um rato, de tal modo que há só um rato no labirinto); • Q (indica um queijo). Seu programa deverá imprimir várias vezes o labirinto, movendo o rato uma casa em cada impressão. O rato só pode se mover nas direções N, S, E e W (logo, não se pode mover em diagonal). Seu programa deverá levar o rato ao queijo no menor número de movimentos. Se o queijo for inatingível, seu programa não deverá imprimir nada. Exemplos de entrada ###### r # ### # #Q # Saídas correspondentes ###### r # ### # #Q # ###### r# ### # #Q # ###### # ###r# #Q # ###### # ### # #Q r# ###### # ### # #Q r # ###### # ### # #Qr # ###### # ### # #r # r#Q