bacharelado em ciência e tecnologia · escreva um programa para ler um vetor de 10 números...

19
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 }

Upload: buingoc

Post on 19-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bacharelado em Ciência e Tecnologia · 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

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 }

Page 2: Bacharelado em Ciência e Tecnologia · 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

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

O número a ser analisado.

Page 3: Bacharelado em Ciência e Tecnologia · 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

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 }

Page 4: Bacharelado em Ciência e Tecnologia · 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

[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

Page 5: Bacharelado em Ciência e Tecnologia · 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

}

}

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

Page 6: Bacharelado em Ciência e Tecnologia · 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

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

Page 7: Bacharelado em Ciência e Tecnologia · 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

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)

}

Media = Media/x

Page 8: Bacharelado em Ciência e Tecnologia · 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

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]

Page 9: Bacharelado em Ciência e Tecnologia · 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

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

Page 10: Bacharelado em Ciência e Tecnologia · 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

} } 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++

Page 11: Bacharelado em Ciência e Tecnologia · 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

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

Page 12: Bacharelado em Ciência e Tecnologia · 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

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

ENTRADA SAÍDA

Page 13: Bacharelado em Ciência e Tecnologia · 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

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

Page 14: Bacharelado em Ciência e Tecnologia · 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

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

Page 15: Bacharelado em Ciência e Tecnologia · 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

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.

Page 16: Bacharelado em Ciência e Tecnologia · 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

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

Page 17: Bacharelado em Ciência e Tecnologia · 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

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) { cadeia nome

Page 18: Bacharelado em Ciência e Tecnologia · 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

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

Page 19: Bacharelado em Ciência e Tecnologia · 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

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.