BCC701 – Programação de Computadores I – 2018-02 Lista de...

5
Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 1 BCC701 – Programação de Computadores I – 2018-02 Lista de Exercícios 04: Funções Definidas pelo Usuário http://www.decom.ufop.br/bcc701/ Questão 1. (2014-01) A distância entre dois pontos, A e B , no plano cartesiano pode ser dada pela fórmula: â = + ( ) Escreva um programa principal e uma função definida pelo usuário, DIST, onde: 1. o programa principal faz a leitura das coordenadas dos pontos A e B , ou seja, os valores de X A , Y A , X B e Y B , conforme o exemplo de execução abaixo; 2. o programa principal faz a chamada a uma função DIST, com os valores das coordenadas lidas. A função retorna para o programa principal o valor numérico da distância entre os pontos A e B . 3. o programa principal faz a impressão da distância calculada. OBS.: não é necessária a validação dos dados de entrada, as coordenadas serão sempre números reais. A seguir, um exemplo de execução do programa. Exemplo 1: CÁLCULO DA DISTÂNCIA ENTRE DOIS PONTOS INFORME XA: 1 INFORME YA: 1 INFORME XB: 4 INFORME YB: 5 DISTÂNCIA ENTRE (1, 1) e (4, 5) : 5 Questão 2. (2014-02) O fatorial duplo – é definido do seguinte modo: = × × × × × , é í × × × × × , é Por exemplo: 9!! = 9 × 7 × 5 × 3 × 1 = 945 12!! = 12 × 10 × 8 × 6 × 4 × 2= 46080

Transcript of BCC701 – Programação de Computadores I – 2018-02 Lista de...

Page 1: BCC701 – Programação de Computadores I – 2018-02 Lista de ...2018-02][bcc701]_lista_04_-_funcoes.pdf · Lista de Exercícios 04: ... as coordenadas serão sempre números reais.

Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOM

1

BCC701 – Programação de Computadores I – 2018-02 Lista de Exercícios 04: Funções Definidas pelo Usuário

http://www.decom.ufop.br/bcc701/ Questão 1. (2014-01)

A distância entre dois pontos, A e B , no plano cartesiano pode ser dada pela fórmula:

𝒅𝒊𝒔𝒕â𝒏𝒄𝒊𝒂 = 𝑿𝑩 − 𝑿𝑨 𝟐 + (𝒀𝑩 − 𝒀𝑨)𝟐

Escreva um programa principal e uma função definida pelo usuário, DIST, onde:

1. o programa principal faz a leitura das coordenadas dos pontos A e B , ou seja, os valores de XA , YA , XB e YB , conforme o exemplo de execução abaixo;

2. o programa principal faz a chamada a uma função DIST, com os valores das coordenadas lidas. A função retorna para o programa principal o valor numérico da distância entre os pontos A e B .

3. o programa principal faz a impressão da distância calculada.

OBS.: não é necessária a validação dos dados de entrada, as coordenadas serão sempre números reais.

A seguir, um exemplo de execução do programa. Exemplo 1: CÁLCULO DA DISTÂNCIA ENTRE DOIS PONTOS INFORME XA: 1 INFORME YA: 1 INFORME XB: 4 INFORME YB: 5 DISTÂNCIA ENTRE (1, 1) e (4, 5) : 5

Questão 2. (2014-02)

O fatorial duplo – 𝒏‼ – é definido do seguinte modo:

𝒏‼ = 𝒏 × 𝒏 − 𝟐 × 𝒏 − 𝟒 × ⋯ ×𝟑 ×𝟏 , 𝒔𝒆 𝒏 é í𝒎𝒑𝒂𝒓𝒏 × 𝒏 − 𝟐 × 𝒏 − 𝟒 × ⋯ ×𝟒 ×𝟐 , 𝒔𝒆 𝒏 é 𝒑𝒂𝒓

Por exemplo:

• 9!! = 9 × 7 × 5 × 3 × 1 = 945 • 12!! = 12 × 10 × 8 × 6 × 4 × 2= 46080

Page 2: BCC701 – Programação de Computadores I – 2018-02 Lista de ...2018-02][bcc701]_lista_04_-_funcoes.pdf · Lista de Exercícios 04: ... as coordenadas serão sempre números reais.

Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOM

2

Defina em Scilab, uma função dfat, que receba como parâmetro um número inteiro positivo 𝒏 e retorne o valor de 𝒏‼ , tal como definido acima.

Escreva também um programa principal que leia um número inteiro positivo e calcule o valor do fatorial duplo desse número, usando a função dfat, previamente definida. O programa deve testar se o valor lido é um inteiro positivo, solicitando que seja digitado um novo valor, caso contrário.

A seguir, temos dois exemplos de execução do programa principal, com suas entradas e saídas de dados. Exemplo 1: Digite um numero inteiro positivo: -3 Valor inválido! Digite um número inteiro positivo: 9 9!! = 945

Exemplo 2: Digite um número inteiro positivo: 12 12!! = 46080

Questão 3. (2015-01)

Dê uma definição para a função maxdiv, que recebe como parâmetro um número inteiro positivo n e retorna o maior divisor próprio de n. O maior divisor próprio de n é o maior divisor de n diferente dele próprio. Por exemplo, o maior divisor próprio de 12 é 6 e o maior divisor próprio de 15 é 5.

Escreva agora um programa que leia dois números inteiros positivos, imprima o maior divisor próprio de cada um deles e imprima a soma dos maiores divisores próprios desses dois números, conforme ilustra o exemplo de execução a seguir. Exemplo 1: SOMA DOS MAIORES DIVISORES DIGITE UM NÚMERO INTEIRO POSITIVO: 8 MAIOR DIVISOR PRÓPRIO = 4 DIGITE UM NÚMERO INTEIRO POSITIVO: 15 MAIOR DIVISOR PRÓPRIO = 5 SOMA DOS DIVISORES = 9

Questão 4. (2015-02)

Defina uma função para calcular o valor final de um investimento de capital. A função deve ter como parâmetros o valor do capital investido (C), a taxa de juros anual (j), o número de anos (a) durante os quais o capital permanecerá investido e a taxa de imposto que incidirá sobre o rendimento (ir); a função deve retornar como resultado o valor do montante final (VF) do investimento, já descontado o imposto de renda. As fórmulas envolvidas são:

V = C(1+j)a VF = V - (V–C)*ir Escreva um programa para ler do teclado um valor de capital a ser investido, a taxa anual de juros, o

número de anos programado para o investimento e a taxa de imposto. O programa deverá calcular e imprimir o valor final resultante do investimento, utilizando a função definida acima. Deverá, também, calcular e imprimir o percentual de lucro líquido, dado pela fórmula:

L = (VF – C)/C * 100

Page 3: BCC701 – Programação de Computadores I – 2018-02 Lista de ...2018-02][bcc701]_lista_04_-_funcoes.pdf · Lista de Exercícios 04: ... as coordenadas serão sempre números reais.

Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOM

3

Exemplo 1: Investimento Capital a ser investido: 10000 Taxa de juros anual do investimento: 0.07 Número de anos do investimento: 10 Imposto sobre o lucro: 0.15 Valor final = 18220.79 Percentual de lucro líquido = 82.21

Questão 5. (2016-01)

O K-fatorial de um número natural N é uma generalização do fatorial, definido como:

N x (N-K) x (N-2K) x (N-3K) x ..., onde o produto é feito enquanto o resultado da diferença é maior ou igual a 1, ou seja, somente fatores maiores ou iguais a 1 são incluídos no produto.

Observe que o fatorial de N, que é definido como:

N! = N x (N-1) x (N-2) x ... x 1 corresponde ao K-fatorial de N, para K=1.

Escreva uma função fatNK, que receba como parâmetros dois números inteiros N e K, e retorne o K-fatorial de N.

Escreva também um programa que leia dois números N e K e utilize essa função para calcular o k-fatorial de N, tal como nos exemplos de execução a seguir.

OBS: Não é necessário verificar se N e K são inteiros positivos. Exemplo 1: Cálculo do K-fatorial Digite o valor de N: 10 Digite o valor de K: 3 Resposta = 280

Exemplo 2: Cálculo do K-fatorial Digite o valor de N: 21 Digite o valor de K: 19 Resposta = 42

Exemplo 3: Cálculo do K-fatorial Digite o valor de N: 21 Digite o valor de K: 30 Resposta = 21

Exemplo 4: Cálculo do K-fatorial Digite o valor de N: 8 Digite o valor de K: 1 Resposta = 40320

Page 4: BCC701 – Programação de Computadores I – 2018-02 Lista de ...2018-02][bcc701]_lista_04_-_funcoes.pdf · Lista de Exercícios 04: ... as coordenadas serão sempre números reais.

Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOM

4

Questão 6. (2016-02)

O quociente e o resto da divisão inteira de dois números inteiros positivos, A e B, podem ser calculados por operações sucessivas de subtração.

Por exemplo, se A = 17 e B = 3, a divisão de A por B seria calculada do seguinte modo:

• 1ª subtração: 17 – 3 = 14 • 2ª subtração: 14 – 3 = 11 • 3ª subtração: 11 – 3 = 8 • 4ª subtração: 8 – 3 = 5 • 5ª subtração: 5 – 3 = 2

O quociente da divisão é o número de vezes que foi realizada a subtração de B, neste caso, 5 vezes. Note que a subtração de B é repetida enquanto o resultado obtido é maior ou igual ao valor de B. O resto da divisão é o resultado obtido na última subtração.

Escreva uma função DivMod, que receba como parâmetros dois números inteiros A e B e retorne o quociente e o resto da divisão inteira de A por B, calculados conforme a estratégia explicada acima.

Escreva também um programa principal, que leia dois valores A e B, verifique se os valores lidos são inteiros positivos e, em caso afirmativo, imprima o quociente e o resto da divisão de A por B, usando a função DivMod definida anteriormente. Caso os valores lidos não sejam inteiros, o programa deve imprimir uma mensagem, tal como mostrado a seguir. Exemplo 1: Divisão de inteiros... Digite o valor de A: 3 Digite o valor de B: 2.6 ERRO: Valor(es) inválido(s)

Exemplo 2: Divisão de inteiros... Digite o valor de A: 17 Digite o valor de B: 3 17 dividido por 3: quociente = 5, resto = 2

Questão 7. (2017-02)

Considere um relógio analógico marcando 5 h (a.m.) [Figura 1]. Se avançarmos mais quatro horas, o relógio mostrará 9 h (a.m.) [Figura 2]. Mas, se o horário exibido no relógio for 5 h (a.m.) e o tempo avançar 10 h, o horário exibido no mostrador do relógio não será 15 h (5+10), o horário exibido será 3 h (p.m.) [Figura 3].

Figura 1

Figura 2

Figura 3

Observe que 3 é o resto da divisão inteira de (5+10) por 12. Em geral, se o relógio exibe h horas, onde h é um inteiro de 1 a 12, e o horário avança para frente x horas, onde x é inteiro, então o horário y exibido no mostrador será: y = modulo((h + x), 12) .

Page 5: BCC701 – Programação de Computadores I – 2018-02 Lista de ...2018-02][bcc701]_lista_04_-_funcoes.pdf · Lista de Exercícios 04: ... as coordenadas serão sempre números reais.

Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOM

5

Implemente a função hora, que recebe dois valores: a hora atual (h) e a quantidade de horas (x), e retorna a hora o ponteiro das horas apontará após transcorrerem x horas a partir de h conforme descrito anteriormente. Implemente também um programa principal que leia a hora atual (h) e quantas horas o relógio irá avançar para frente (x) indicando e, a seguir, chama a função. O programa se comporta conforme os exemplos de execução, e não há necessidade de verificar se os dados de entrada são corretos. Exemplo 1: Qual o horário atual? 5 O quanto você quer avançar o relógio? 30 O ponteiro das horas apontará para: 11

Exemplo 2: Qual o horário atual? 1 O quanto você quer avançar o relógio? 20 O ponteiro das horas apontará para: 9

Questão 8. (2018-01)

Na última aula de matemática, Rafael, Beto e Carlos aprenderam algumas novas expressões matemáticas. Cada um deles se identificou com uma expressão em especial, e resolveram competir para ver quem tinha a expressão de maior resultado.

● A expressão que Rafael escolheu é r = (3x)² + y². ● Já Beto escolheu a expressão b = 2(x²) + (5y)². ● Carlos, por sua vez, escolheu a expressão c = -100x + y³.

Implemente uma função que receba os valores de x e y, calcule o valor de cada expressão, e retorne qual das expressões resultou no maior resultado. Para testar sua função, implemente um programa principal que leia N valores de x e y, e para cada um deles, imprima o vencedor, conforme os exemplos de execução a seguir.

Exemplo 1: Digite o valor de N: 4 Digite o valor de x: 2 Digite o valor de y: 30 Carlos ganhou. Digite o valor de x: 2 Digite o valor de y: 100 Carlos ganhou. Digite o valor de x: 30 Digite o valor de y: 20 Beto ganhou. Digite o valor de x: 15 Digite o valor de y: 5 Rafael ganhou.

Exemplo 2: Digite o valor de N: 0

Exemplo 3: Digite o valor de N: -10