algoritmia e programaçãoanamadur/apro0405/enuncs...algoritmia e programação 2004/2005 engª....

13
DEPARTAMENTO DE ENGENHARIA INFORMÁTICA Algoritmia e Programação AULAS PRÁTICAS 2004/2005 Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa

Upload: others

Post on 20-Dec-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA

Algoritmia e Programação

AULAS PRÁTICAS

2 0 0 4 / 2 0 0 5

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa

Page 2: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 2

1. ESTRUTURA DE CONTROLO DE SEQUÊNCIA

1. Escreva um programa que faça a soma de dois números e mostre o resultado.

2. Escreva um programa que dado um valor em escudos converta para euros e

mostre o resultado. euros = escudos / 200.482)

3. Escreva um programa que calcule a área de um quadrado e mostre o resultado.

(área = lado * lado)

4. Escreva um programa que, dado o raio de uma esfera, calcula o seu volume e mostre o resultado. Considere o valor de π = 3,1415.

(volume = 4/3 * π R3) 5. Escreva um programa que dado o número de segundos converta para o formato

HH:MM:SS e mostre nesse formato.

6. Escreva um programa que dado o tempo no formato HH:MM:SS converta para

segundos e mostre o resultado.

2. INSTRUÇÕES DE CONTROLO DE DECISÃO E REPETIÇÃO

1. Escreva um programa que dado um número calcule o respectivo módulo e

apresente o resultado.

2. Escreva um programa que realize uma calculadora com as 4 operações

aritméticas (+, - , *, /) só para inteiros. O utilizador introduz o valor dos

operandos e a operação a realizar, por exemplo:

3 + 5 e o programa acrescenta o resultado = 8

3. Escreva um programa que, dado um carácter, converta para maiúsculo caso seja

um carácter minúsculo e vice-versa. Caso seja outro carácter não faz qualquer

conversão.

(A = a – a + A ) (a= A + a - A )

4. Escreva um programa que permita verificar se uma data é valida.

(ano bissexto: se (divisível por 4 e não por 100) ou divisível por 400 )

Page 3: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 3

6. Escreva um programa que permita determinar a classificação de um aluno na

cadeira de Algoritmia e Programação. A avaliação da cadeira tem duas

componentes: Nota da frequência (NFREQ) e prova de exame (PE). Cada

componente tem um peso de 50% na classificação final. A NFREQ é

determinada da seguinte forma: 3 mini-testes com um peso de 10 % cada, e por

um trabalho prático com um peso de 70%. Não existe nota mínima na NFREQ.

Na PE existe nota mínima de 7 valores (caso nota na PE seja inferior ou igual 7

ao aluno é considerado “Não classificado”. O aluno que falte a mais de 1/3 das

aulas práticas é-lhe atribuído Não Frequentou (NF). As classificações são

atribuídas de 0 a 20 valores.

7. Escreva um programa que imprima a tabuada de um qualquer número inteiro

introduzido pelo utilizador no seguinte formato: 5x1=5 5x2=10 . . . 5x9=45 5x10=50

8. Escreva um programa que calcule o seguinte somatório:

∑=

=n

i

ibaS1

* O valor das variáveis é determinado pelo utilizador.

9. Escreva um programa que determine se um número inteiro é primo.

(os números primos são só divisíveis pela unidade e por ele próprio )

10. Escreva um programa para determinar o máximo divisor comum entre dois

números.

11. Escreva um programa para determinar se um dado número é de Amstrong. (um número de Amstrong são aqueles que somando os cubos dos dígitos dá ess número, por ex: 407=43+03+73 )

Page 4: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 4

12. Descreva um algoritmo que a partir dos tempos de início e de fim de uma

determinada tarefa expressos em Horas e Minutos e Segundos, calcule o tempo

de duração da tarefa expresso em horas.

13. Descreva um algoritmo que, dados 2 números, mostre todos os números pares

do intervalo constituído pelos dois números, por ordem decrescente.

3. INSTRUÇÕES DE CONTROLO DE DECISÃO E REPETIÇÃO

EM ESTRUTURAS ENCAIXADAS

1. Escreva um programa que permita ao utilizador introduzir números até que

digite o zero. O programa deve:

a. Determinar o número de números introduzidos (o zero não conta); b. Determinar o maior e o menor; c. Determinar o número de números pares e ímpares; d. Determinar o número de números positivos e negativos.

Nota: podem ser introduzidos números negativos.

2. Escreva um programa que mostre todos os anos bissextos entre 1900 e 2000.

3. Um número é perfeito se for igual a soma dos seus divisores menores que o

próprio número. Por exemplo, 6 é um número perfeito (6=1+2+3). Descreva

um algoritmo que mostre os números perfeitos menores que 1000.

4. Ler 100 números, determinar o maior, o menor e a média dos 100 números

lidos. Elabore o algoritmo.

5. Determinar o maior número de uma sequência de números lidos do teclado até

ser digitado o número zero.

Page 5: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 5

4. FUNÇÕES 1. Como sabemos, a lei de Ohm é uma relação entre a corrente (I), a tensão (V) e a

resistência (R), veja o circuito eléctrico abaixo:

a) Escreva uma função que recebe os valores de V e R como parâmetros, e calcule a corrente I.

b) Faça um programa que permita testar a função anterior. 2. Escrever uma função que recebe um número inteiro e devolve o maior algarismo

contido nesse número. 3. Escrever uma função que recebe um nº inteiro e devolve:

1 → se o nº é perfeito 0 → se o nº não é perfeito Um nº perfeito é aquele cuja soma dos seus divisores é igual ao próprio nº. Por exemplo:

6 → 1+2+3=6 ⇒ "é perfeito" 8 → 1+2+4=7 ⇒ "não é perfeito"

4. Calcular o somatório:

∑=

n

i

n

n1

2

Crie uma função para determinar cada termo i da série. 5. Determinar qual o nº possuidor de mais divisores. O limite superior é definido pelo

utilizador. a) funcao2() → recebe um nº e devolve a quantidade de divisores que possui. b) funcao1() → recebe o nº limite e determina qual o nº inferior ou igual a ele que possui a maior quantidade de divisores.

6. Escreva uma função que recebe dois parâmetros (caracteres) e troque os seus valores.

Lei de Ohm:

RVI =

Page 6: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 6

7. Escreva uma função que, dados dois números reais, retorna a média deles arredondada para um inteiro, e devolve os números por ordem crescente. Faça um programa que permita testar a função anterior.

8. Escrever uma função que recebe dois nºs inteiros (Numerador e Denominador).

A função deve simplificar a fracção, alterando os valores (Numerador e Denominador). Implemente também a função MDC (Máximo Divisor Comum) para auxiliar na simplificação. Faça um programa que permita testar as funções anteriores.

9. Escrever uma função para inverter os dígitos de um número passado como

argumento. 10. Uma empresa pretende enviar cifrada uma sequência de inteiros decimais de 4 dígitos

(DigDigDigDig). A cifra consiste em: substituir cada dígito Dig por (Dig+8)%10 (i.e., adiciona 8 e calcula o resto da divisão do resultado por 10); depois troca o terceiro dígito com o primeiro e troca o quarto dígito com o segundo. a) Escreva uma função que receba um inteiro decimal de 4 dígitos e o devolva

cifrado. b) Escreva uma função que receba um inteiro cifrado e o decifre para o valor

original. c) Escreva uma função que apresente um “menu” com 2 opções, cifrar e decifrar

número, peça ao utilizador para escolher uma das opções, e retorne a opção escolhida.

d) Faça um programa que permita testar as funções anteriores. 11. Fazer um programa que calcule a Resistência Equivalente dum circuito com duas

resistências em série ou em paralelo. O programa deve permitir ao utilizador escolher entre os dois. Crie as funções “Serie()” e “Paralelo()”.

Série:

Paralelo:

12. Escreva uma função que retorne o número de dígitos que compõem um número

inteiro, passado como argumento da função.

21 RRR +=

2121

RRRRR

=

Page 7: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 7

13. Os Números de Keithinho são números inteiros positivos, com pelo menos dois algarismos, que satisfazem a seguinte propriedade: Seja K>9 um Número de Keithinho com N algarismos. Se for construída uma sequência cujos primeiros N termos são os algarismos do número K (começando pelo mais significativo), e em que cada um dos restantes termos da sequência é a soma dos N termos anteriores, então o número K é um dos termos dessa sequência. Por exemplo, 14 e 197 são Números de Keithinho:

14 → 1,4,5,9,14 197 → 1,9,7,17,33,57,107,197

14. Construa uma função que verifique se um dado número inteiro positivo com 3

algarismos (N=3) é um Número de Keithinho. 15. Escreva uma função que recebe como parâmetro um inteiro positivo N e devolve a

menor potência de 2 maior ou igual a N. 16. Escreva um programa que calcule o salário semanal de um trabalhador. As entradas

são o número de horas empregadas na semana e o valor de cada hora. Até 40 h/semana usa-se o valor dado. Acima de 40h e até 60h há um bónus de 50% para essas horas. Acima de 60h há um bónus de 100% para essas horas. Use uma função para fazer os cálculos.

Page 8: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 8

5. VECTORES

1. Escreva um programa que defina um vector de N inteiros e implemente as seguintes

funções: • Uma função que faça a leitura de 10 valores (inteiros), guardando-os em memória

RAM; • Uma função que retorne a diferença entre o maior e o menor valor do vector; • Uma função que devolva o número de valores pares e impares do vector; • Uma função que devolva qual o número máximo de elementos seguidos, por

ordem crescente;

2. Escreva um programa que defina 2 vectores de N inteiros e implemente as

seguintes funções: • Uma função que faça a leitura de 2 vectores de inteiros com 10 elementos cada,

guardando-os em memória RAM; • Uma função que devolva o valor que existe mais vezes nos dois vectores; • Uma função que devolva o vector sem elementos repetidos, de forma ordenada, bem

como o número de elementos do novo vector;

O Programa deve permitir visualizar os resultados.

3. Escreva um programa que defina 1 vector de N inteiros e implemente as seguintes funções:

• Uma função que faça a leitura das 10 notas atribuídas por cada júri a 1 atleta de ginástica, guardando-os em memória RAM.;

• Uma função que retorne a nota do atleta, sabendo que esta é a média das notas do júri, com excepção da melhor e da pior nota obtida;

• Uma função que retorne a mediana das 10 notas. Mediana é o valor central de uma série de números. Quando existe um número par de elementos, define-se mediana como a média dos dois números centrais;

O Programa deve permitir visualizar os resultados.

4. Elabore um programa que permita gerir o stock de um pequeno armazém de produtos alimentares. Sobre cada produto a informação relevante é o código e a quantidade. O programa deve ter as seguintes funcionalidades:

• Adicionar um novo produto • Actualizar a quantidade de um produto já existente • Indicar a quantidade em stock de determinado produto • Listar todos os produtos • Eliminar um determinado produto

Nota: O programa deve usar dois vectores: um do tipo long para armazenar os códigos dos produtos e um do tipo inteiro para armazenar as quantidades, correspondendo a posição i do vector de códigos ao número na posição i do outro vector. O vector de códigos deve estar sempre ordenado por ordem crescente.

Page 9: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 9

6. ESTRUTURAS E VECTORES DE ESTRUTURAS

1. Declare uma estrutura para armazenar o nº de registo do livro, o título, o autor, a editora, a área a que o livro pertence e guardar também a informação referente à requisição do livro, nomeadamente a data de requisição e de devolução do livro.

a) Faça um programa com duas funções, uma para preencher a estrutura e outra

para mostrar a informação armazenada na estrutura.

b) Defina um vector de N estruturas descritas na alínea anterior, que permita armazenar a informação referente aos livros existentes numa biblioteca.

c) Utilizando esse vector pretende-se fazer um programa que permita:

1 - Inserir os dados dos livros 2 – Listar todos os livros 3 - Procurar um determinado livro dado o titulo 4 – Ordenar os livros por título 5– Listar os livros de um determinado autor ou editora

2. Crie uma estrutura para descrever restaurantes. A estrutura deve armazenar o nome, endereço, preço médio e o tipo de comida. Crie um vector de estruturas e escreva uma função que o preencha a partir do teclado e outra que imprima todos os restaurantes de um certo tipo de comida.

a) Escreva uma função que liste por ordem crescente de preços todos os restaurantes de um certo tipo de comida.

3. Declare uma estrutura capaz de armazenar o nome, o número, o ano de entrada, o curso e quantidade de cadeiras feitas. Defina um vector de 100 estruturas.

a) Escreva uma função para ler os valores para uma determinada estrutura do vector.

b) Para um determinado curso, a perguntar ao utilizador, o programa deve responder quantos alunos fizeram 10 ou menos cadeiras em mais de cinco anos.

c) O programa deve dizer qual o curso com melhor aproveitamento (curso com maior média de cadeiras feitas por aluno).

d) Visualize no monitor todos os cursos inseridos sem repetições.

4. Declare uma estrutura para descrever o mês do ano. A estrutura deve ser capaz de armazenar o nome do mês, a abreviatura em três letras, o número de dias e o número do mês.

a) Defina um vector de 12 estruturas descritas na alínea anterior e inicialize-as com dados de um ano bissexto.

Page 10: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 10

b) Escreva uma função que, dado o número do mês, determina o total de dias do ano até àquele mês. Assuma que a estrutura e o vector das alíneas anteriores foram declaradas globalmente.

c) Reescreva a função anterior recebendo o nome do mês em vez do número.

d) Escreva um programa que solicite ao utilizador o dia e o mês e imprima o total de dias do ano até ao digitado. O mês pode ser o seu número, nome ou abreviatura.

Page 11: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 11

7. MATRIZES

1. Escreva um programa que permita: • ler uma matriz de dimensão máxima 10X10, guardando os valores em memória

RAM; • guardar os valores pares da matriz num vector e elementos impares noutro vector; • ao utilizador visualizar um ou outro vector, dependendo da opção escolhida no

programa principal; Nota: use funções para cada uma das opções

2. Escreva um programa que permita: • ler uma matriz quadrada de dimensão máxima 10, guardando os valores em

memória RAM; • calcular o somatório do triângulo inferior esquerdo; • calcular o somatório do triângulo superior direito; • calcular o somatório do triângulo superior esquerdo; • calcular o somatório do triângulo inferior direito;

O Programa deve visualizar os resultados, bem como dar a escolher ao utilizador

qual das operações pretende efectuar. (use funções para cada uma das opções)

3. Escreva um programa que dada uma matriz quadrada calcule a sua transposta

4. Escreva um programa que efectue a multiplicação de 2 matrizes. 5. Escreva um programa para realizar a seguinte operação: M = M1+M2*M3; onde

M1, M2 e M3 são matrizes. M e M1 tem dimensão 3X5; M2 tem dimensão 3X4; M3 tem dimensão 4X5. Os componentes das matrizes M1, M2 e M3 são fornecidos via teclado.

.

Page 12: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 12

8. MANIPULAÇÃO DE STRINGS

1. Elabore um programa que lê uma linha de texto e elimine todas as repetições

consecutivas do mesmo caracter.

2. Elabore um programa que lê uma linha de texto e uma função que indique a

percentagem de vogais que contém (atenção que, por exemplo, os espaços não

devem ser contabilizados!).

3. Escreva um programa que leia uma string representando uma frase e uma palavra e

faça uma função que indique o número de ocorrências da palavra na frase.

Nota: Atenção com as palavras que contêm a palavra a encontrar!

4. Elabore um programa que recebe da linha de comando vários nomes de assinantes

de um serviço e os armazena num vector. Faça as funções para:

a) ordenar e apresentar os nomes por ordem alfabética, eliminando múltiplas ocorrências de espaços em branco por um só;

b) apresentar todos os assinantes cujo primeiro nome seja igual ao especificado pelo utilizador;

c) acrescentar a determinado assinante o seu título profissional.

Exemplo: Dados de Entrada:

Carlos Alberto Dias Jaime Fernando Matos da Silva Clara Maria Rodrigues Carlos Alberto Pereira Anabela Mota

a) Nomes ordenados: Anabela Mota Carlos Alberto Dias Carlos Alberto Pereira Clara Maria Rodrigues Jaime Fernando Matos da Silva

b) Apresentar assinantes, por exemplo, de nome “Carlos”: Carlos Alberto Dias Carlos Alberto Pereira

c) Acrescentar ao assinante “Jaime Fernando Matos da Silva” o título Eng.

Eng. Jaime Fernando Matos da Silva

Page 13: Algoritmia e Programaçãoanamadur/APRO0405/Enuncs...Algoritmia e Programação 2004/2005 Engª. Informática Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo

Algoritmia e Programação 2004/2005 Engª. Informática

Ana Madureira, Ana Almeida, Isabel Praça, José Avelino Marinho, Ricardo Almeida, Paulo Baltarejo Sousa 13

5. Considere que existe um vector bidimensional (matriz) de letras com 10 linhas e 10

colunas do tipo “sopa de letras”.

z z d e d o b a h t a v a e i o u d s I z z e e i o d e d o a v W e i o u d s e z z E e o o u o s e a v R e d o u s s e z z o d E d u s o e a v Y e D o u s u e z z U e i o u s r e a v I e i o u s o e

a) Construa uma função que receba a matriz de letras, um vector com palavras a

pesquisar e diga para cada palavra do vector, pelo menos uma sua ocorrência na matriz de letras numa linha, numa linha invertida, numa coluna ou numa coluna invertida, sem distinguir letras maiúsculas de minúsculas. Por exemplo, para a palavra dedo um resultado possível seria:

• na horizontal, na 1ª linha e 3ª coluna, • na horizontal invertida, na 7ª linha e 3ª coluna; • na vertical, na 2ª linha e 8ª coluna; • na vertical invertida, na 5ª linha e 5ª coluna.

b) Construa uma função que receba a matriz de letras e diga qual a letra que aparece mais vezes, sem distinguir letras maiúsculas de minúsculas.

Nota: Exame da época de recurso 2003/2004