• Nenhum resultado encontrado

Bacharelado em Ciência e Tecnologia BC0505 Processamento da Informação - Prof. Edson Pinheiro Pimentel

N/A
N/A
Protected

Academic year: 2021

Share "Bacharelado em Ciência e Tecnologia BC0505 Processamento da Informação - Prof. Edson Pinheiro Pimentel"

Copied!
19
0
0

Texto

(1)

Bacharelado em Ciência e Tecnologia

BC0505 – Processamento da Informação -

Prof. Edson Pinheiro Pimentel

GABARITO

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))

Resposta: a) 125 b) 0

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

O somatório dos primeiros n elementos de qualquer PA.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Primeiro termo e razão da PA.

PROCESSAMENTO:

Como transformar os insumos na saída?

an = a1 + (n-1)*razao

soma = ((a1+an)*n)/2

PROGRAMA - PORTUGOL

funcao real somaPA(real razao, real a1) {

//DECLARAÇÃO DE VARIÁVEIS

inteiro n

// ENTRADA DE DADOS

escreva("Informe o número de elementos N a ser somado:") leia(n)

// PROCESSAMENTO E SAÍDA DE DADOS

real an = a1 + (n-1)*razao retorne ((a1+an)*n)/2 }

(2)

[3]. Construa uma função que retorne se dada letra (minúscula ou maiúscula) é vogal (V) ou não (F).

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

V se a letra for vogal e F se não for vogal.

ENTRADA

: Quais os insumos necessários para se obter a saída?

A letra a ser analisada (maiúscula ou minúscula).

PROCESSAMENTO:

Como transformar os insumos na saída?

se(letra=='a'ou letra=='e' ou letra=='i' ou letra=='o' ou letra=='u' ou letra=='A' ou letra=='E' ou

letra=='I' ou letra=='O' ou letra=='U') {

retorne 'V'

}

retorne 'F'

PROGRAMA - PORTUGOL

funcao caracter verificaVogal(caracter letra){

// PROCESSAMENTO E SAÍDA DE DADOS

se(letra=='a'ou letra=='e' ou letra=='i' ou letra=='o' ou letra=='u' ou

letra=='A' ou letra=='E' ou letra=='I' ou letra=='O' ou letra=='U') { retorne 'V'

}

retorne 'F'

}

OBS: Poderia ser usado uma função que retorna uma variável tipo LÓGICO (verdadeiro ou

falso).

[4]. Construa uma função que retorne V (true) se o sexo passado por parâmetro for uma letra válida (M ou F)

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

V (verdadeiro) se a letra for M ou F.

ENTRADA

: Quais os insumos necessários para se obter a saída?

A letra a ser analisada.

PROCESSAMENTO:

Como transformar os insumos na saída?

se (letra == 'M' ou letra == 'F')

{

retorne verdadeiro

}

PROGRAMA - PORTUGOL

funcao logico Sexo(caracter letra) {

// PROCESSAMENTO E SAÍDA DE DADOS

se (letra == 'M' ou letra == 'F') {

retorne verdadeiro }

}

OBS: Poderia ser usado uma função que retorna um tipo CARACTER (V).

[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)

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

V se o número for capicua ou F caso contrário.

ENTRADA

: Quais os insumos necessários para se obter a saída?

(3)

PROCESSAMENTO:

Como transformar os insumos na saída?

inteiro temp = a

inteiro capicuia = 0

enquanto (temp != 0){

inteiro t = temp %10

temp = temp/10

capicuia = (capicuia *10) +t

retorne capicuia

PROGRAMA - PORTUGOL

funcao inteiro validacao (inteiro a) {

//DECLARAÇÃO DE VARIÁVEIS

inteiro temp = a inteiro capicuia = 0

// PROCESSAMENTO E SAÍDA DE DADOS

enquanto (temp != 0){ inteiro t = temp %10 temp = temp/10 capicuia = (capicuia *10) +t } retorne capicuia }

[6]. Construa uma função que retorne o valor em binário de um dado número inteiro decimal.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Valor em binário de um dado número inteiro decimal.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Um número inteiro decimal.

PROCESSAMENTO:

Como transformar os insumos na saída?

enquanto (temp != 0) {

bin = bin + (temp%2)*i

i = i * 10

temp = temp /2

}

PROGRAMA - PORTUGOL

funcao inteiro binario(inteiro a){

//DECLARAÇÃO DE VARIÁVEIS

inteiro temp = a inteiro bin = 0 inteiro i = 1

// PROCESSAMENTO E SAÍDA DE DADOS

enquanto (temp != 0) { bin = bin + (temp%2)*i i = i * 10

temp = temp /2 }

retorne bin }

(4)

[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

(5)

} } RESPOSTA programa { funcao inicio () { inteiro n1, n2, resultado

n1 = LerValorSuperior ("Digite o valor de N1: ", 0)

n2 = LerValorSuperior ("Digite o valor de N2: ", n1) resultado = Verifica_maior(n1,n2)

se(resultado == 0){

escreva("Os valores são iguais") }

senao{

escreva("Os valores são diferentes") }

}

//

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

se (valor1 > valor2){ resposta = 1 }

senao se (valor2 > valor1){ resposta = 2 } retorne resposta } }

(6)

[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.

funcao inicio() {

inteiro x, y

escreva("Digite dois números inteiros positivos:") leia(x)

leia(y)

se (Valida_Positivo(x) e Valida_Positivo(y) ){ escreva ("A soma é ", SomaDois_Inteiros(x,y))

escreva ("\nO produto é ",ProdutoDois_Inteiros(x,y)) }senao{

escreva("Os valores não são positivos") }

}

funcao logico Valida_Positivo (inteiro x){ se(x>=0){ retorne verdadeiro }senao{ retorne falso } }

funcao inteiro SomaDois_Inteiros (inteiro x, inteiro y){ retorne x+y

}

funcao inteiro ProdutoDois_Inteiros (inteiro x, inteiro y){ retorne x*y

(7)

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).

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

A posição do maior valor (elemento).

ENTRADA

: Quais os insumos necessários para se obter a saída?

Um vetor e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

para (i=1; i<x; i++)

{

se (temp < A[i])

{

temp = A[i]

j=i

}

}

PROGRAMA - PORTUGOL

funcao inteiro Retorna_indice(inteiro A[], inteiro x) {

//DECLARAÇÃO DE VARIÁVEIS

inteiro temp = A[0] inteiro j=0, i=1

//PROCESSAMENTO E SAÍDA DE DADOS

para (i=1; i<x; i++) { se (temp < A[i]) { temp = A[i] j=i } } retorne j }

[10]. Construa uma função que receba por parâmetro, um vetor e seu tamanho retorne a media dos seus elementos.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Média dos elementos de um vetor.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Um vetor e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá percorrer o vetor, somar os elementos e dividir pelo número de elementos do

vetor. Dessa forma:

para (inteiro i=0; i<x; i++){

Media = Media +A[i]

escreva("\n",Media)

}

(8)

PROGRAMA - PORTUGOL

funcao real media(real A[], inteiro x){ real Media = 0.0

escreva("A soma das nota é:\n") para (inteiro i=0; i<x; i++){ Media = Media +A[i] escreva("\n",Media) }

Media = Media/x retorne Media }

[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.

RESPOSTA:

funcao inicio(){ inteiro A[10] LeituraVetor(A)

real soma = SomaVetor(A) real media = soma/10 ImprimeVetor(A)

escreva("\nA média dos valores do vetor é: " + media) }

funcao inteiro validacao(inteiro a){ inteiro valor = a

enquanto(valor <= 0){

escreva("Erro: Valor deve ser maior que 0") escreva("Digite outro valor inteiro positivo") leia(valor)

}

retorne valor }

funcao LeituraVetor(inteiro &A[]){

escreva("Digite os valores da matriz") para(inteiro i=0; i<10; i++){ inteiro x leia(x) x = validacao(x) A[i] = x } escreva("") }

funcao real SomaVetor(inteiro A[]){ real soma = 0

para(inteiro i=0; i<10; i++){ soma = soma + A[i]

(9)

}

retorne soma }

funcao ImprimeVetor(inteiro A[]){ escreva("VETOR") para(inteiro i=0; i<10; i++){ escreva(A[i]) } escreva("") }

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Retornar V se o vetor estiver em ordem crescente e F caso contrário.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Um vetor e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

Percorrer o vetor e verificar se o elemento anterior é maior ou menor que o próximo elemento.

Se for maior, então o vetor não está em ordem crescente.

PROGRAMA - PORTUGOL

funcao logico eh_crescente(inteiro vetor[], inteiro size){ para(inteiro i=0; i<size-1; i++){

se(vetor[i]>vetor[i+1]){ retorne falso } } retorne verdadeiro }

[13]. Construa uma função que receba por parâmetro, um vetor e seu tamanho e devolva o vetor ordenado (em ordem crescente)

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

O vetor ordenado em ordem crescente.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Um vetor e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá percorrer o vetor e deixá-lo em ordem crescente.

PROGRAMA - PORTUGOL

funcao vazio Ordena (inteiro V[], inteiro tam){ inteiro temp

para( inteiro i = 0; i<tam; i++){

para( inteiro j = 1; j < tam; j++ ){ se(V[j]<V[j-1]){ temp = V[j] V[j] = V[j-1] V[j-1] = temp }

(10)

}

}

para( inteiro i = 0; i<tam; i++){ escreva(V[i]," ")

}

}

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Vetores APAR contendo os elementos pares do vetor A e AIMPAR contendo os elementos

ímpares do vetor A.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Vetor A e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá percorrer o vetor A e armazenar os elementos pares no vetor APAR e os

elementos ímpares no vetor AIMPAR.

PROGRAMA - PORTUGOL

funcao inicio() {

inteiro x, A[], i

escreva("Digite o tamanho do vetor: ") leia (x)

escreva("Digite os valores do vetor: ") para (i=0; i<x; i++){

leia(A[i]) }

inteiro APAR[], AIMPAR[], M[][] M [1][x] = Par_Impar(A, x)

para (i=0; i<x; i++){ APAR[i] = M[0][i] }

para (i=0; i<x; i++){ AIMPAR[i] = M[1][i] }

}

funcao inteiro[][] Par_Impar (inteiro A[], inteiro a){ inteiro APAR[a], AIMPAR[a], M[2][a]

inteiro l=0, k=0 para (inteiro i=0; i<a; i++){ se (A[i]%2 == 0){ APAR[l] = A[i] l++ } senao{ AIMPAR[k] = A[i] k++

(11)

} } para (inteiro j=0; j<l; j++){ M[0][j] = APAR[j] } para (inteiro j=0; j<k; j++){ M[1][j] = AIMPAR[j] } retorne M[1][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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Quantidade de valores pares em X.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Vetor A e seu tamanho.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá percorrer o vetor e se o elemento do vetor for par, deve ser contado em um

contador. No final, a função retorna o valor do contador, que é o número de elementos pares do

vetor.

PROGRAMA - PORTUGOL

funcao inteiro quantidade (inteiro A[], inteiro a){ inteiro cont = 0 para (inteiro i =0; i< a; i++){ se (A[i] %2 == 0) { cont ++ } } retorne cont }

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Elemento sucessor do elemento “i”. Caso não seja possível, retornar o valor -1 e imprimir uma

mensagem.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Vetor A, seu tamanho e uma posição “i”.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá verificar se houver sucessor do elemento na posição informada “i”. Se sim,

retornar o valor do sucessor, caso contrário, deve retornar o valor -1.

se(i+1 == tam){

escreva("Erro! Índice indicado maior ou igual ao tamanho da matriz")

retorne -1

}

senao{

Suc = A[i+1]

retorne Suc

(12)

PROGRAMA - PORTUGOL

funcao inteiro Sucessor (inteiro A[], inteiro tam, inteiro i){

inteiro Suc

se(i+1 == tam){

escreva("Erro! Índice indicado maior ou igual ao tamanho da matriz") retorne -1 } senao{ Suc = A[i+1] retorne Suc } }

[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

//item (A)

funcao media_final(cadeia nomes[], real notas[][], inteiro faltas[]){ real nota_final = 0.0

para(inteiro i=0; i<80; i++){

nota_final = (notas[i][0]+notas[i][1])/2

escreva("Media final de ", nomes[i], ": ", nota_final ) }

}

//item (B)

funcao media_maior7(cadeia nomes[], real notas[][], inteiro faltas[]){ real nota_final = 0.0

para(inteiro i=0; i<80; i++){

nota_final = (notas[i][0]+notas[i][1])/2 se(nota_final > 7.0){

escreva("Aluno(a) ", nomes[i], " teve ", faltas[i], " falta(s)" )

} }

}

[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

(13)

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

funcao inicio(){

inteiro N

inteiro x[101]

escreva("Digite o valor de N\n") leia(N)

escreva("Digite os valores\n") para( inteiro i = 0; i<101; i++){ x[i]=0 } para( inteiro i = 0; i<N; i++){ inteiro aux leia(aux) se(aux>=0 ou aux <=100){ x[aux] = x[aux]+1 } } escreva(ValorMaisFrequente(x)) escreva("\n",MaiorFrequencia(x)) }

funcao inteiro MaiorFrequencia (inteiro V[]){

inteiro temp = 0 para( inteiro i = 0; i<101; i++){ se(V[i]>=temp){ temp = V[i] } } retorne temp }

funcao inteiro ValorMaisFrequente (inteiro V[]){ inteiro temp = 0 para( inteiro i = 0; i<101; i++){ se(V[i]>=V[temp]){ temp = i } }

(14)

retorne(temp) }

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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

V se existir alguma linha com todos elementos zerados e F caso contrário.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Matriz A e suas dimensões.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá verificar se há alguma linha com todos os elementos zerados. Dessa forma:

para (i=0; i<c; i++)

{

inteiro cont=0

para (j=0; j<l; j++)

{

se (A[i][j] != 0){

pare

}

senao{

cont++

se (cont==1){

retorne verdadeiro

}

}

}

}

retorne falso

PROGRAMA - PORTUGOL

funcao logico zero (inteiro A[][], inteiro l, inteiro c) { inteiro i,j para (i=0; i<c; i++) { inteiro cont=0 para (j=0; j<l; j++) { se (A[i][j] != 0){ pare } senao{ cont++

(15)

se (cont==1){ retorne verdadeiro } } } } retorne falso }

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

V se existir alguma coluna com todos elementos zerados e F caso contrário.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Matriz A e suas dimensões.

PROCESSAMENTO:

Como transformar os insumos na saída?

A função deverá verificar se há alguma linha com todos os elementos zerados. Dessa forma:

para (inteiro i = 0; i<l; i++){

inteiro cont = 0

para (inteiro j = 0; j<c; j++){

se (A[i][j] != 0) {

pare

} senao {

cont ++

se (cont == c) {

retorne verdadeiro

}

}

}

}

retorne falso

PROGRAMA - PORTUGOL

funcao logico zero(inteiro A[][], inteiro l, inteiro c) { para (inteiro i = 0; i<l; i++){ inteiro cont = 0 para (inteiro j = 0; j<c; j++){ se (A[i][j] != 0) { pare } senao { cont ++ se (cont == c) { retorne verdadeiro } } } } retorne falso }

[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.

(16)

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Soma dos elementos da coluna K.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Matriz A, suas dimensões e um número K.

PROCESSAMENTO:

Como transformar os insumos na saída?

Acumular os elementos da coluna K em um contador e retornar o contador para função início.

inteiro soma =0

para(inteiro i = 0; i<linha; i++){

soma = soma + A[i][K]

}

retorne soma

PROGRAMA - PORTUGOL

funcao inteiro SomaColunaK (inteiro A[][], inteiro linha, inteiro coluna,

inteiro K){

inteiro soma =0

para(inteiro i = 0; i<linha; i++){ soma = soma + A[i][K]

}

retorne soma }

[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.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Custo para ir de K a F, passando por L e M.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Matriz A, suas dimensões e 4 valores indicando origens e destinos (K, L, M, F).

PROCESSAMENTO:

Como transformar os insumos na saída?

Matriz [K][L] + Matriz[L][M] + Matriz[M][F]

PROGRAMA - PORTUGOL

funcao inteiro custoTransporte(inteiro matriz[][], inteiro linhas, inteiro col, inteiro K, inteiro L, inteiro M, inteiro F){

retorne matriz[K][L]+matriz[L][M]+matriz[M][F] }

[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

(17)

matriz Anx2 e o valor de N e retorne a quantidade de empates.

SAÍDA:

Quais os resultados que o algoritmo dever fornecer ?

Quantidade de empates.

ENTRADA

: Quais os insumos necessários para se obter a saída?

Matriz A e o valor de N.

PROCESSAMENTO:

Como transformar os insumos na saída?

para( inteiro i = 0; i<n; i++){

se(V[i][0]==V[i][1]){

temp = temp+1

}

}

PROGRAMA - PORTUGOL

funcao inteiro Empates (inteiro V[][], inteiro n){ inteiro temp = 0 para( inteiro i = 0; i<n; i++){ se(V[i][0]==V[i][1]){ temp = temp+1 } } retorne temp }

[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. RESPOSTA:

funcao cadeia[][] Inicio (cadeia A[][]) { inteiro i, j para (i=0; i<14; i++){ para (j=0; j<40; j++){ A[i][j] = "LIVRE" } } retorne A[i][j] }

funcao cadeia[][] Compra (cadeia A[][], inteiro fileira, inteiro poltrona) {

(18)

enquanto (A[fileira][poltrona] != "LIVRE") {

escreva ("Poltrona ocupada! Escolha outra: ") escreva ("Digite a fila: ")

leia (fileira)

escreva ("Digite a poltrona: ") leia (poltrona)

}

escreva ("Escreva seu nome: ") leia (nome)

A[fileira][poltrona] = nome

escreva ("Obrigado pela preferência!") retorne A[fileira][poltrona]

}

funcao Pesquisa (cadeia A[][], inteiro fileira) { inteiro B[20][2] inteiro i=0, cont=0, j=-1, k enquanto (i!=40) { se (A[fileira][i] == "LIVRE") { j++ B[j][0] = i+1

enquanto (A[fileira][i+1] == "LIVRE") { cont++ i++ } B[j][1] = cont } i++ } para (k=0; k<j; k++) {

escreva ("A poltrona ", B[k][0], "está livre e existem ", B[k][1], " poltronas vazias ao seu lado.")

} }

(19)

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

OBS: Este exercício terá uma solução diferente para cada um dos alunos, pois na entrada

de dados espera-se o número de matrícula de cada aluno.

Referências

Documentos relacionados

Ainda na última parte da narrativa, outro “milagre” acontece: Grenouille apa- rece, de súbito, em meio ao povo, destampa uma pequena garrafa que trazia consi- go, borrifa-se com

Os alunos que concluam com aproveitamento este curso, ficam habilitados com o 9.º ano de escolaridade e certificação profissional, podem prosseguir estudos em cursos vocacionais

6.54- Valor médio de cobre e seu desvio padrão, em µg.cm-2, e coeficiente de variação, em %, para as faces, considerando o factor sectores da rampa e sua interacção com as versões

Com a realização da Ficha de Diagnóstico, o professor deve averiguar as aprendizagens dos alunos já realizadas sobre números racionais não negativos – operações e propriedades.

• Analisar como são implementadas as estratégias de marketing na Universidade Luterana do Brasil - Ulbra; • Verificar como é utilizado o esporte nas estratégias de marketing da

Fica divulgada no ANEXO ÚNICO a listagem de inscrições que poderão requerer o reembolso da taxa de inscrição ou optar por permanecer com a inscrição

a) Carteira de Trabalho e Previdência Social - CTPS: página da identificação (foto e verso), páginas do contrato de trabalho (folha da última assinatura do empregador até a seguinte

Índices como os de riqueza de espécies e de diversidade tradicional, que são medidas de diversidade alfa, não são suficientes se o propósito for selecionar sítios