Ficha 5 PT

Você também pode gostar

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 7

Laboratório de Programação

Exercícios Ficha 5

Exercício 1 (com solução)

Escreva uma função que coloque no ecrã uma linha com 20 asteriscos *. Use a função que acabou de criar para obter o seguinte
resultado:

****** * * * * * * * * * * * ***
Numeros entre 1 e 5
****** * * * * * * * * * * * ***
1
2
3
4
5
****** * * * * * * * * * * * ***

Solução:
# include < stdio .h >

void i mp r i me _ 2 0_ e strelas () {
printf ( " * * * * ** **** ***** **** *\ n " ) ;
}

int main () {
im pr i m e_ 2 0 _e s trelas () ;
printf ( " Numeros entre 1 e 5\ n " ) ;
im pr i m e_ 2 0 _e s trelas () ;
int n ;
for ( n = 1 ; n <= 5 ; n ++)
printf ( " % d \ n " , n ) ;
im pr i m e_ 2 0 _e s trelas () ;
}

Exercício 2 (com solução)

Escreva uma função que determine se um número é múltiplo de 5. Use a função que acabou de criar para verificar quais os número
de 1 a 100 que são múltiplos de 5.
Resultado Esperado:
5 e ' multiplo de 5
10 e ' multiplo de 5
....
95 e ' multiplo de 5
100 e ' multiplo de 5

Solução:
# include < stdio .h >

int multiplo5 ( int n ) {


if ( n % 5 = = 0)
return 1 ;
else
return 0 ;
}

int main () {
int num ;
for ( num = 1 ; num <= 100 ; num ++) {
if ( multiplo5 ( num ) )
printf ( " % d e ' multiplo de 5\ n " , num ) ;
}
}

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 1


Laboratório de Programação
Exercícios Ficha 5

Podemos ainda rescrever a função multiplo5 de forma mais compacta:


int multiplo5 ( int n ) { return n % 5 = = 0 ; }

Exercício 3 (com solução)

Sabendo que x n (para n >= 0) pode ser calculado multiplicando x por si mesmo n vezes:
x n = x × x × x . . . × x (n vezes)

Escreva uma função que determine o valor de uma potência de expoente inteiro não negativo (x n , para n = 0).
Faça uso da função num pequeno programa. Exemplo:
Base : 2.3
Expoente : 4
Resultado de 2.3^4: 27.9841

Dica: O operador ^ não é o expoente!


Solução:
# include < stdio .h >

float potencia ( float base , int expoente ) {


float pot = 1 ;
int k ;
for ( k = 1 ; k <= expoente ; k ++)
pot * = base ;
return pot ;
}

int main () {
float base ;
int exp ;

printf ( " Base : " ) ;


scanf ( " % f " , & base ) ;

printf ( " Expoente : " ) ;


scanf ( " % d " , & exp ) ;

printf ( " Resultado de %.3 f ^ % d = %.3 f \ n " , base , exp , potencia ( base , exp ) ) ;
}

Exercício 4
Altere a implementação do exercício 5.1 de forma que seja possível especificar o número de estrelas a imprimir no ecrã como
parâmetro à função criada.

Altere o seu código de forma a produzir o seguinte resultado:


**********
Bem - vindo
**********

Altere a sua função de forma que seja também possível especificar o símbolo:
==========
Bem - vindo
==========

Exercício 5
Altere o programa implementado no exercício 5.3 por forma a suportar expoentes negativos.

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 2


Laboratório de Programação
Exercícios Ficha 5

Exercício 6
Implemente as funções com os seguintes protótipos:
• int is_upper(char c)
devolve verdade (̸=0) caso c seja maiúscula

• int is_lower(char c)
devolve verdade (̸=0) caso c seja minúscula
• char switch_case(char c)
devolve a versão oposta (minúscula/maiúscula) do carácter c

• char read_char()
pergunta (em loop) ao utilizador por um carácter até que introduza uma letra ([A-Z], [a-z]) ou o caraceter ’.’ e devolve-a
Utilizando as funções que implementou, crie um programa que:
• Pergunte ao utilizador garantidamente uma letra (use a função read_char), até que o utilizador introduza um ’.’, altura
em que o programa deve imprimir no terminal "Adeus!" e terminar
• Mostre no terminal a letra oposta (minúscula/maiúscula) à que o utilizador introduziu (usando a função switch_case)
Dica: reutilize as funções is_upper/is_lower onde possível

Exemplo:
introduza uma letra [ '. ' para sair ]: 3
- 3 nao e ' uma letra
introduza uma letra [ '. ' para sair ]: !
- ! nao e ' uma letra
introduza uma letra [ '. ' para sair ]: A
- A -> a
introduza uma letra [ '. ' para sair ]: C
- C -> c
introduza uma letra [ '. ' para sair ]: k
- k -> K
introduza uma letra [ '. ' para sair ]: .
- Adeus !

Exercício 7
a) Crie uma função que determine o factorial de um número inteiro segundo a expressão:
n
Y
n! = x
x=1

Exemplo: 5! = 1 × 2 × 3 × 4 × 5

b) Crie uma função para calcular o número de combinações possíveis de um subconjunto p de números de um conjunto n de
números, dado pela expressão:
n!
C pn =
(n − p)! × p!

c) Use as funções criadas em cima para determinar o número de chaves possíveis para:

– O totoloto - 6 numeros em 49 possíveis - C 649


– O euromilhões - 5 numeros em 50 possíveis, 2 estrelas em 11 possíveis - C 550 ×C 211

Compare os seus resultados com o exemplo:


Totoloto : 13983816
Euromilhoes : 116531800

Dica: Use o tipo double para os cálculos

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 3


Laboratório de Programação
Exercícios Ficha 5

Exercício 8
O cálculo do Valor Atual Líquido V AL de um investimento de capital de valor v , com base numa série de futuros pagamentos
anuais fixos, à taxa de juro t durante n anos é dado pela fórmula:
n
X v
V AL =
ano=1 (1 + t )ano
Utilize a função potencia do exercício 5.5 para calcular o V AL com valores de v , t e n introduzidos pelo utilizador.
Exemplo:
- Introduza o valor ( v ) : 20000
- Introduza a taxa ( t ) : 2.5
- Introduza o numero de anos ( n ) : 5
Valor Atual Liquido ( VAL ) : 7984.768

Exercício 9
Implemente as funções com os seguintes protótipos:
• int bissexto(int ano)
devolve verdade (̸=0) caso ano seja bissexto
Dica: O ano é bissexto ser for divisível 4 e não divisível por 100 ou se for divisível por 400

• int ultimo(int mes, int ano)


devolve o último dia do mês mes do ano ano
• int valida(int dia, int mes, int ano)
devolve verdade (̸=0) caso a data dia/mes/ano seja válida
• int dia_ano(int dia, int mes, int ano)
devolve o dia do ano para a data dia/mes/ano
• int dias_entre(int dia1, int mes1, int ano1, int dia2, int mes2, int ano2)
devolve o número de dias entre as datas dia1/mes1/ano1 e dia2/mes2/ano2
Utilizando as funções que implementou, crie um programa que o informe do número de dias que passaram desde que nasceu.

Exemplo:
Data de nascimento [ dia / mes / ano ]: 1/11/1968
Data de hoje [ dia / mes / ano ]: 21/11/2018
18282 dias ja vividos .

Exercício 10
Pretende-se uma pequena aplicação que nos ajude a determinar a nota final de um aluno, com base em 6 avaliações qualitativas
intercalares.
Para o efeito, escreva em C as seguintes funções:

a) int ler_valor()
Pergunta ao utilizador uma avaliação qualitativa mostrando um menu com as opções:
1 - Mau
2 - Não Satisfaz
3 - Satisfaz
4 - Satisfaz Bastante
5 - Excelente
Devolve depois o valor inteiro escolhido.

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 4


Laboratório de Programação
Exercícios Ficha 5

b) int qual2quant(int qual)


Converte e devolve uma avaliação qualitativa numa avaliação quantitativa (0 20), segundo a escala:

Qual. Quant.
Mau 0
Não Satisfaz 5
Satisfaz 12
Satisfaz Bastante 17
Excelente 20

c) int main()
Use as funções criadas nas alíneas anteriores para calcular a média final (quantitativa) do aluno com base em 6 avaliações
qualitativas
Exemplo:
= = = Avaliacao 1 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente
Avaliacao : 1
= = = Avaliacao 2 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente
Avaliacao : 2
= = = Avaliacao 3 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente
Avaliacao : 3
= = = Avaliacao 4 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente
Avaliacao : 4
= = = Avaliacao 5 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente
Avaliacao : 5
= = = Avaliacao 6 = = =
Escolha a avaliacao :
1) Mau
2) Nao Satisfaz
3) Satisfaz
4) Satisfaz Bastante
5) Excelente

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 5


Laboratório de Programação
Exercícios Ficha 5

Avaliacao : 5

Nota final do aluno : 12


Dica: Se inserir a sequência 1, 2, 3, 4, 5, 5 para a avaliação dá uma nota final arredondada de 12 valores.

Exercício 11
Escreva em C as seguintes funções:

a) Uma função que apresente as seguintes opções ao utilizador:

Estado civil :
c ) Casado
s ) Solteiro
v ) Viuvo
d ) Divorciado
R: _

b) Uma função que informe o utilizador da escolha que fez (por extenso, ex.: Casado) com base na letra escolhida nas opções
anteriores.

c) Uma função main que faça uso das anteriores para perguntar (em ciclo) vários estados civis, mostrando no final o estado
predominantemente escolhido pelo utilizador. A cada leitura deve ser mostrado o estado por extenso. A execução do
programa deve terminar quando for inserido um carácter não válido (que não represente qualquer estado civil).

Exemplo:
Estado civil :
c ) Casado
s ) Solteiro
v ) Viuvo
d ) Divorciado
R: c
# Escolheu ' Casado '
Estado civil :
c ) Casado
s ) Solteiro
v ) Viuvo
d ) Divorciado
R: s
# Escolheu ' Solteiro '
// ...
Estado civil :
c ) Casado
s ) Solteiro
v ) Viuvo
d ) Divorciado
R: s
# Escolheu ' Solteiro '

Estado civil predominante : Solteiro

Exercício 12 (extra-aula)

Implemente um conjunto de funções que permitam:


• Verificar se um carácter é uma vogal
• Verificar se um carácter é uma consoante

• Verificar se um carácter é alfanumérico

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 6


Laboratório de Programação
Exercícios Ficha 5

• Verificar se um número é primo

Implemente um pequeno programa que demonstre as funções implementadas, perguntando para cada uma delas um valor ao
utilizador.

2023/2024 ESTiG - Escola Superior de Tecnologia e Gestão de Bragança 7

Você também pode gostar