Ficha Nº3
Objectivos:
O objectivo principal desta ficha é familiarizar o aluno com a codificação de algoritmos um pouco mais complexos alguns deles envolvendo manipulação de strings. Outro dos objectivos, é a integração com a disciplina de Arquitectura de Computadores, pelo que no fim da ficha aparece um conjunto de problemas sobre conversão de representações numéricas.
Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.
Nota: os exercícios 2, 3, 4 e 9 são de resolução opcional. Na ficha a submeter ao sistema só são obrigatórios os restantes.
Exercícios:
[
Exercício1] [
Exercício2] [
Exercício3] [
Exercício4] [
Exercício5] [
Exercício6] [
Exercício7] [
Exercício8] [
Exercício9]
Exercício Nº1: Divisores de um número
Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiros e escreve no écran os seus divisores.
Exercício Nº2: Maior Divisor Comum
Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o maior divisor comum dos argumentos recebidos. Posteriormente codifique um programa principal (
main()) que utiliza esta função para cálculo do maior divisor comum de dois números fornecidos pelo utilizador.
Ver
Algorítmo de Euclides
Que pode ser resumido em:
mdc(m,n) -->
m>=n : m%n==0 --> n
m%n!=0 --> mdc(n,m%n)
m<n : mdc(n,m)
Exercício Nº3: Menor Múltiplo Comum
Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o menor múltiplo comum dos argumentos recebidos. Posteriormente codifique um programa principal (
main()) que utiliza esta função para cálculo do menor múltiplo comum de dois números fornecidos pelo utilizador.
Exercício Nº4: É Primo?
Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter um argumento inteiros e produzir um resultado do tipo booleano (o docente irá desenvolver uma pequena biblioteca de booleanos:
bool.h). O resultado será verdadeiro (
TRUE) se o argumento passado fôr primo e falso (
FALSE) caso contrário. Posteriormente codifique um programa principal (
main()) que utiliza esta função para verificar quem é primo numa sequência de inteiros introduzidos pelo utilizador (terminada por 0).
Exercício Nº5: Tudo ao contrário!
Foste transferido para uma nova escola.
Nessa escola, a professora e matemática gostava muito de pôr os alunos a pensar e tentava que a mais simples tarefa fosse algo em que o raciocínio tivesse que intervir.
Uma das medidas que ela implementou foi a de utilizar os números inteiros invertidos. Por exemplo, o 12 seria 21 e o 1821 seria 1281.
Ora, os alunos locais já estão habituados a lidar com os inteiros daquela maneira e até fazem as operações de adição e subtracção com os inteiros naquela forma. No entanto, para ti, que acabaste de chegar à escola esta tarefa não é tão simples.
Assim, resolveste criar um programa em computador que fizesse três coisas:
- dado um número calcula o seu inverso (o valor inteiro correcto)
- dados dois números na forma invertida calcula a sua soma e devolve o resultado na mesma forma invertida
- dados dois números na forma invertida calcula a sua subtracção e devolve o resultado na mesma forma invertida
Sugestão: especifica uma função para cada um dos pontos acima.
Exercício Nº6: Sequência de Fibonacci
Codifica um programa que gere os primeiros 20 números de Fibonacci. Os números de Fibonacci são definidos recursivamente da seguinte forma:
fib(0) = 1
fib(1) = 1
fib(n) = fib(n-1) + fib(n-2) para n>=2
Exercício Nº7: Conversão decimal-binário
Depois de estudares o algoritmo das divisões sucessivas para a conversão de números decimais em números binários, desenvolvido na aula teórico-prática, codifica-o num programa em C.
Exercício Nº8: Conversão binário-decimal
Depois de teres resolvido o problema anterior, tenta resolver o problema inverso. Nota que os números binários são representados numa string com os carácteres 0 e 1.
Exercício Nº9: Conversão binário-hexadecimal
Pensa agora com converter um número binário em hexadecimal. Cria um programa em C para realizar esta tarefa.
--
JoseCarlosRamalho - 07 Mar 2005