Exercício 1 - Empresa de Seguro de Automóveis
Bacharelado em Ciência e Tecnologia
BC0505 – Processamento da Informação - Prof. Edson Pinheiro Pimentel
EXERCÍCIOS
Lista de Exercícios – Modularização + Vetor + Matriz
PARTE 1 – Modularização
[1]. Dado o módulo a seguir, determinar o valor retornado para cada uma das chamadas:
funcao inteiro Equação1 (inteiro A) {
inteiro X
X = (A * A)+(5*A)/ 2
retorne (X)
}
a) Equação1(10)
b) Equação1((3 * 4) – 14 + (8 / 4))
[2]. Construa uma função que retorne o somatório dos primeiros n elementos de qualquer PA, dados o primeiro termo e a razão.
[3]. Construa uma função que retorne se dada letra (minúscula ou maiúscula) é vogal (V) ou não (F).
[4]. Construa uma função que retorne V (true) se o sexo passado por parâmetro for uma letra válida (M ou F)
[5]. Um número é capicua quando pode ser lido da esquerda para a direita ou da direita para a esquerda. Construa uma função que retorne se dado número é capicua (V) ou não (F)
[6]. Construa uma função que retorne o valor em binário de um dado número inteiro decimal.
[7]. COMPLETE O PROGRAMA A SEGUIR SEGUINDO AS ORIENTAÇÕES:
a) Note a existência da função LerValorSuperior que faz a entrada de dados de um valor e obriga o usuário a digitar um valor maior ou igual a um limite inferior (Esta função está pronta).
b) Note que a função VerificaMaior está começada e você deverá completá-la conforme orientações mais adiante.
PEDE-SE:
i. Complete a função VerificaMaior que deverá ter o seguinte comportamento: Ela está recebendo por parâmetro DOIS VALORES e deverá retornar o valor 1 se o primeiro valor for maior que o segundo, retornar 2 se o segundo valor for maior que o primeiro, ou retornar zero se os dois valores forem iguais.
ii. Complete a função inicio:
· Faça a chamada da função LerValorSuperior para ler o valor de N2, tendo como limite inferior o valor de N1. Note que a chamada para a leitura de N1 já está feita e o usuário não conseguirá digitar um valor menor que zero. No caso de N2, o limite inferior deverá ser o valor de N1. Siga o modelo da chamada.
· Faça a chamada da função VerificaMaior, na função início.
· Logo a após a chamada verifique o valor retornado e imprima uma das seguintes mensagens: “os valores são iguais” ou “os valores são diferentes”
programa {
funcao inicio () {
inteiro n1, n2, resultado
n1 = LerValorSuperior ("Digite o valor de N1: ", 0)
// completar ...
}
// ------------------------------------------------------------------------------------------------------
funcao inteiro LerValorSuperior (cadeia msg, inteiro inferior) {
inteiro valor
escreva(msg)
leia(valor)
enquanto (valor < inferior) {
escreva("Erro: Valor deve ser maior ou igual a ", inferior, "\n")
escreva(msg)
leia (valor)
}
retorne valor
}
// ---------------------------------------------------------------------------------------------------------
funcao inteiro Verifica_maior(inteiro valor1, inteiro valor2)
{
inteiro resposta = 0
// escreva abaixo o codigo da sua função
_____________
____________
retorne resposta
}
}
[8]. Escreva um programa para ler dois números inteiros positivos e mostrar a soma e o produto dos mesmos. Seu programa deve ter três sub-rotinas (ou módulos):
a) A primeira, chamada Valida_Positivo, deve ler e validar um número (número deve ser positivo). A função deve ser chamada DUAS vezes no programa principal. Uma para cada número.
b) A segunda, chamada SomaDois_Inteiros, deve receber dois números por parâmetro e retornar a soma
c) A terceira, chamada ProdutoDois_Inteiros, deve receber dois números por parâmetro e retornar o produto.
A função principal (inicio) deve chamar as funções, na sequência correta e imprimir os resultados.
PARTE 2 – Modularização + Vetor
[9]. Construa uma função que receba por parâmetro, um vetor e seu tamanho retorne a posição do maior valor (elemento).
[10]. Construa uma função que receba por parâmetro, um vetor e seu tamanho retorne a media dos seus elementos.
[11]. Escreva um programa para ler um VETOR de 10 números inteiros positivos e imprimir o vetor e também a soma dos elementos do vetor e a media dos elementos. Seu programa deve ter quatro sub-rotinas (ou módulos):
a) A primeira, chamada Valida_Positivo, deve ler e validar um número (número deve ser positivo).
b) A segunda, chamada Leitura_Vetor, deve ler os elementos do vetor. Para validar os números deve fazer uso da função Valida_Positivo.
c) A terceira, chamada SomaVetor, deve receber o vetor por parâmetro e retornar a soma dos seu elementos
d) A quarta, chamada Imprime_Vetor, deve receber o vetor por parâmetro e imprimir os elementos.
A função principal (inicio) deve chamar as funções, na sequência correta e imprimir a média.
[12]. Construa uma função que receba por parâmetro, um vetor e seu tamanho retorne V (true) se o vetor estiver em ordem crescente e (F) caso contrário.
[13]. Construa uma função que receba por parâmetro, um vetor e seu tamanho e devolva o vetor ordenado (em ordem crescente)
[14]. Construa uma função que receba por parâmetro, um vetor A e seu tamanho e devolva outros dois vetores APAR e AIMPAR. O vetor APAR deve conter os elementos pares de A e o vetor AIMPAR, os elementos ímpares de A.
[15]. Construa uma função que receba por parâmetro, um vetor A e seu tamanho, e retorne a quantidade de valores pares em X.
[16]. Construa uma função chamada Sucessor que receba por parâmetro, um vetor A, seu tamanho e uma posição “i”, e retorne o elemento sucessor do elemento “i”. Caso não seja possível retornar o sucessor, retorne o valor -1 e imprima uma mensagem de erro na tela. Lembre-se de que não é possível retornar o sucessor do último elemento.
[17]. Considere a existência de um vetor (de String) contendo o nome de 80 alunos, uma matriz (de double) de 80x2 contendo 2 notas (a nota de cada prova numa coluna ) e um vetor (de int) contendo as respectivas faltas desses alunos. Escreva funções específicas para:
a. Exibir na tela a média final de cada aluno
b. Imprimir o nome e o total de faltas dos alunos com média acima de 7
[18]. Dada uma sequência de N números entre 0 e 100. Determine qual o valor de maior frequência. Caso haja mais de um valor tenha a maior frequência, mostre o maior deles.
Entrada
Na primeira linha ha um inteiro N, 1 ≤ N ≤ 1000000, representando a quantidade números.
Nas N linhas seguintes haverá um numero natural entre 0 e 100 inclusive por linha.
Saída
O programa gera apenas duas linhas. Na primeira dela mostre qual foi o valor com maior frequência. E na segunda linha, mostre a quantidade de vezes que esse número apareceu na sequencia de valores. Apos a impressão deste ultimo valor quebre uma linha. Caso haja mais de um valor tenha a maior frequência, mostre o maior deles.
Exemplos
ENTRADA
SAÍDA
10 1 7 4 29 7 4 7 8 7 29
7
4
18 1 7 7 7 7 7 1 8 8 8 8 8 1 7 8 7 8 1
8
7
15 100 100 1 1 100 100 100 2 5 6 7 11 2 2 100
100
6
15 0 0 1 1 0 0 100 2 5 6 7 11 2 0 100
0
5
15 101 100 1 1 10 10 10 2 5 10 6 7 11 2 2 10
Obs. Note que aqui foram “digitados” 16 números (ao invés dos 15 sugeridos no primeiro dado) pois o 101 é uma entrada inválida e deve ser rejeitado
10
5
PARTE 3 – Modularização + MATRIZ
[19]. Construa uma função que receba por parâmetro, uma matriz A e suas dimensões e retorne V (true) se existir alguma linha com todos os elementos zerados e F (false) caso contrário.
[20]. Construa uma função que receba por parâmetro, uma matriz A e suas dimensões e retorne V (true) se existir alguma coluna com todos os elementos zerados e F (false) caso contrário.
[21]. Construa uma função que receba por parâmetro, uma matriz A, suas dimensões e um número K. Retorne a soma dos elementos da coluna K.
[22]. Os elementos Aij de uma matriz inteira Anxn representam os custos de transporte da cidade i para a cidade j.
Exemplo: Sendo K= 0, L = 1, M = 3 e F = 0 o custo do itinerário é:
A[K][L] + A[L][M] + A[M][F] =
A[0][1] + A[1][3] + A[3][0] =
1 + 400 + 7 = 408
Construa uma função que receba por parâmetro, uma matriz A, suas dimensões e 4 valores indicando origens e destinos (K, L, M, F). A função deve retornar o custo para ir de K a F, passando por L e M conforme exemplo.
[23]. Uma matriz de duas colunas pode ser utilizada para representar o resultado de jogos de campeonatos. Na primeira coluna o número de gols do time1 (mandante do jogo) e na segunda coluna o número de gols do time2 (visitante). Construa uma função que receba por parâmetro, uma matriz Anx2 e o valor de N e retorne a quantidade de empates.
[24]. Um teatro deseja informatizar o sistema de venda de ingressos. Suponha que o teatro tenha 560 poltronas, ou seja 40 cadeiras em cada uma das 14 filas. Para comprar ou reservar um lugar o usuário deve informar o número da fila (de 1 a 14) e o número da poltrona na fila (de 1 a 40).
Na reserva ou venda de um ingresso deverá ficar registrado o nome da pessoa que comprou o bilhete para a poltrona. Inicialmente todas as poltronas estarão preenchidas como “LIVRE”
Construa funções específicas para :
a) Inicializar todas as poltronas do teatro no sistema, com a situação "LIVRE"
b) Vender um determinado ingresso. Aqui o usuário irá informar o número da fila e cadeira. Se estiver livre, solicitar também o nome da pessoa. Se a poltrona NÃO estiver LIVRE avisar ao usuário
c) Pesquisar quantas poltronas "consecutivas" livres existem numa determinada FILA. Essa rotina deve informar qual o número da primeira poltrona livre, e quantas livres "consecutivas" tem ao lado dela
PARTE 4 – TESTE DE MESA
[25]. Simule a execução do algoritmo SEGREDO através de “teste de mesa”:
a) Na linha 5 da função inicio preencha os espaços da matriz A com a sequência dos 6 primeiros dígitos da sua Matrícula
b) Transcreva esses valores para a Matriz Original (na tabela teste de mesa);
c) Simule a execução da chamada da função FSegredo (linha 6) e no ESCOPO FSEGREDO, anote os novos valores de cada variável e as linhas que as modificam. É obrigatório anotar todas as linhas que modifiquem um dos valores contidos nas variáveis i, j, aux até que a função seja encerrada.
d) Indique na “Matriz após FSegredo” os valores da Matriz A após a execução de FSegredo.
e) Que valor será impresso na linha 7 da função início? ___________
“SEGREDO”
TESTE DE MESA
Matriz A Original
0
1
2
0
1
ESCOPO FSEGREDO
LINHA
i
j
aux
Matriz Após FSegredo
0
1
2
0
1
Top Related