exercício 1 - empresa de seguro de automóveis · web viewsuponha que o teatro tenha 560...

9
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

Upload: others

Post on 20-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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