• 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!
20
0
0

Texto

(1)

Bacharelado em Ciência e Tecnologia

BC0505 – Processamento da Informação - Prof. Edson Pinheiro

Pimentel

EXERCÍCIOS

Lista de Exercícios – Vetor e Matriz

PARTE 1 – Vetor

[1]. Sendo o vetor V igual a:

5 10 7 6 16 3 9 2 2 1

1 2 3 4 5 6 7 8 9 10 e as variáveis X = 1 e Y = 3, escreva o valor correspondente à solicitação, conforme exemplos: a) V[X+1]  valor corresponde a V[2] = 7

b) V[Y+2]  valor corresponde a V[5] = 3 c) V[X+3]  valor corresponde a V[4] = 16 d) V[X*4]  valor corresponde a V[4] = 16 e) V[Y*2]  valor corresponde a V[6] = 9 f) V[X+Y]  valor corresponde a V[4] = 16

g) V[X+(Y*4)]  valor corresponde a V[13] = *** erro ***

Neste exercício, basta utilizar os valores de X e Y dados no enunciado para realizarmos as operações dentro dos [ ] que definem o índice do elemento do vetor. Em seguida, verificamos no vetor V quais são os valores dos elementos.O elemento de índice 13 não existe, então há erro. OBS: na representação acima, os números de baixo são os índices e os de cima os valores do vetor.

[2]. Escreva um algoritmo que Leia 10 valores inteiros e armazene-os em um Vetor. Após a digitação do último valor, imprima os elementos com conteúdo par.

SAÍDA: Quais os resultados que o algoritmo dever fornecer? Números pares do vetor de entrada.

ENTRADA: Quais os insumos necessários para se obter a saída? 10 valores inteiros em um vetor

PROCESSAMENTO: Como transformar os insumos na saída?

Percorrer o vetor de 10 elementos e para cada elemento x que é par, isto é, quando x % 2 = 0, imprimir x  PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS inteiro vetor[10] inteiro indice = 0 // ENTRADA enquanto(indice < 10){

(2)

escreva( "\n Digite um número inteiro " ) leia( vetor[indice] )

indice++ }

// PROCESSAMENTO & SAÍDA

para (indice = 0; indice < 10; indice++){ se(vetor[indice] % 2 == 0){ escreva( " " , vetor[indice] ) } } } }

[3]. Escreva um algoritmo que Leia 15 nomes de pessoas e armazene-os em um Vetor. Após a digitação do último nome, imprima-os na sequência contrária (ou seja, o último nome digitado deve ser o primeiro a ser impresso, etc)

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

15 nomes de pessoas digitados, porém, na sequência inversa à digitada.  ENTRADA: Quais os insumos necessários para se obter a saída?

15 nomes de pessoas.

PROCESSAMENTO: Como transformar os insumos na saída?

Após armazenar os nomes em um vetor (nomes[15]), outro vetor deve ser alocado com os novos nomes. Para isso, em um laço “para”, utilizar:

nomes_inverso[i]=nomes[14-i]  PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS cadeia nomes[15],nomes_inverso[15] inteiro i // ENTRADAS para(i=0;i<15;i++){

escreva("Digite o nome nº",i+1," : ") leia(nomes[i])

}

// PROCESSAMENTO E SAÍDA

escreva("\nNomes na ordem inversa: \n") para(i=0;i<15;i++){ nomes_inverso[i]=nomes[14-i] escreva(nomes_inverso[i],"\n") } } }

(3)

[4]. Escreva um programa que leia 20 números e após o fim da entrada de dados, exiba na tela, primeiro os elementos com conteúdo ímpar e depois os elementos das posições pares.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Vetor que contenha no começo todos os elementos ímpares e depois os elementos das posições pares.

ENTRADA: Quais os insumos necessários para se obter a saída? 20 números inteiros.

PROCESSAMENTO: Como transformar os insumos na saída? Armanezar os 20 valores em um vetor.

Imprimir primeiro apenas os valores ímpares, depois apenas os elementos das posições pares.

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro n = 20 inteiro vetor [n], i // ENTRADAS para(i=0;i<n;i++) leia(vetor[i]) // PROCESSAMENTO E SAÍDA escreva("O vetor resultante é: ")

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

se (vetor[i] % 2 != 0) //os elementos ímpares escreva(vetor [i] + " ")

}

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

se (i % 2 == 0) //se a posição (ou índice) é par escreva(vetor[i] + " ")

} } }

[5]. Escreva um algoritmo que leia 8 elementos em um vetor inteiro A. Construa outro vetor B, de mesma dimensão de A, com seus elementos sendo a multiplicação do elemento correspondente de A por 3. Mostre os elementos de B.

SAÍDA: Quais os resultados que o algoritmo dever fornecer? Vetor B com elementos de A multiplicados por 3

ENTRADA: Quais os insumos necessários para se obter a saída? 8 números inteiros que formarão o vetor A

(4)

Para cada elemento x de A, multiplica-lo por 3 e atribuir o resultado para os elementos de B B[indice] = 3 * A[indice]  PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS inteiro A[8], B[8] inteiro indice = 0

// ENTRADA & PROCESSAMENTO enquanto(indice < 8){

escreva( indice+1, " - Digite um número inteiro: " ) leia( A[indice] ) B[indice] = 3 * A[indice] indice++ } // SAÍDA

para(indice = 0; indice < 8; indice++){ escreva( " " ,B[indice])

} } }

[6]. Leia 20 elementos em um vetor A e construa o vetor B com elementos de A, porém invertidos, ou seja, o primeiro elemento de A passa a ser o último elemento de B, e assim por diante. Mostre os 2 vetores, o maior elemento do vetor A e o menor elemento do vetor B.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Elementos dos vetores A e B, sendo B os elementos de A na ordem inversa; E os maiores elementos destes mesmos vetores.

ENTRADA: Quais os insumos necessários para se obter a saída? Elementos do vetor A.

PROCESSAMENTO: Como transformar os insumos na saída?

Após armazenar elementos de A, o vetor B deve ser alocado com os elementos de A na ordem inversa. Para isso, em um laço “para” de forma crescente no índice i, utilizar:

vetorB[19-i]=vetorA[i]

Para determinar o maior elemento, pode ser utilizada a seguinte condição: se(vetorA[i]>maiorA ou i==0){

maiorA=vetorA[i] }

Esta condição está presente no laço das entradas, para o caso do vetor A, e no processamento, no caso do vetor B é análogo o menor.

PROGRAMA - PORTUGOL

(5)

{

funcao inicio() {

// DECLARAÇÃO DE VARIÁVEIS

inteiro vetorA[20], vetorB[20], maiorA, menor, i

// ENTRADAS para(i=0;i<20;i++){

escreva("Digite o elemento de A nº",i+1," : ") leia(vetorA[i])

vetorB[19-i]=vetorA[i] //preenche B de trás para frente }

maiorA = vetorA[0] //inicializa variáveis de maior/menor menorB = vetorB[0]

// PROCESSAMENTO para(i=0;i<20;i++){

se(vetorA[i] > maiorA){ //Atualiza a variável maiorA enquanto percorre A maiorA = vetorA[i]

}

se(vetorB[i] < menorB){ //Análogo ao condicional do maiorA menorB = vetorB[i] } } // SAÍDA escreva("\nElementos de A: \n") para(i=0;i<20;i++){

escreva("\nElemento de A nº",i+1," : ",vetorA[i]) }

escreva("\n\nMaior elemento de A: ",maiorA,"\n") escreva("\nElementos de B:")

para(i=0;i<20;i++){

escreva("\nElemento de B nº",i+1," : ",vetorB[i]) }

escreva("\n\nMenor elemento de B: ",menorB,"\n") }

}

[7]. Escreva um algoritmo que Leia um vetor de N elementos. Após a digitação do último valor, encontre e mostre o maior elemento.

SAÍDA: Quais os resultados que o algoritmo dever fornecer? O maior elemento do vetor.

(6)

ENTRADA: Quais os insumos necessários para se obter a saída? N números inteiros.

PROCESSAMENTO: Como transformar os insumos na saída?

Após armazenar os valores em um vetor, fazer comparações com o elemento seguinte do vetor para verificar qual o maior.

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro n = 0 inteiro maior = 0, i // ENTRADAS

escreva ("Favor inserir o tamanho do vetor: ") leia (n)

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

escreva ("Digite o elemento " +i+ " do vetor: ") leia (vetor [i])}

// PROCESSAMENTO E SAÍDA para (i=0; i<n-1; i++){

se (vetor [i] >= vetor [i+1]) maior = vetor [i]

senao

maior = vetor [i+1]} se (n == 1)

maior = vetor [0]

escreva ("O maior elemento do vetor é: " + maior) }

}

[8]. Escreva um programa que leia o nome e a idade de 20 pessoas e exiba, após o fim da entrada de dados, a idade média do grupo e o nome das pessoas com idade acima da média.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Idade média do grupo e os nomes das pessoas com idade acima da média.  ENTRADA: Quais os insumos necessários para se obter a saída?

20 nomes de pessoas e suas respectivas idades colocados em 2 vetores.  PROCESSAMENTO: Como transformar os insumos na saída?

Precisaremos calcular a média das idades acumulando em uma variável soma_idades, média = soma_idades/20

Se a idade de cada indivíduo for maior que a idade média, imprimir o nome do indivíduo.

(7)

programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS inteiro idades[20] cadeia nomes[20]

inteiro indice = 0, soma_idades = 0 real mediaIdades

// ENTRADA

enquanto(indice < 20){

escreva( indice+1, " - Digite o nome: " ) leia( nomes[indice] )

escreva( indice+1, " - Digite a idade dessa pessoa: " ) leia( idades[indice] )

// PROCESSAMENTO & SAÍDA

soma_idades = soma_idades + idades[indice] indice++

}

mediaIdades = soma_idades/20.0

escreva( " A idade média do grupo é de " , mediaIdades, " anos \n" ) para(indice = 0; indice < 20; indice++){

se(idades[indice] > mediaIdades){ escreva(nomes[indice], " " ) } } } }

[9]. Escreva um programa que leia 100 números e exiba na tela a média, o maior, o menor, o percentual de números ímpares e o percentual de múltiplos de 3.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Média (media), maior dos nºs (maior), menor dos nºs (menor), percentual de nºs ímpares (impares), percentual de múltiplos de 3 (mult_3).

ENTRADA: Quais os insumos necessários para se obter a saída? Todos os 100 números, armazenados em um vetor de 100 posições.  PROCESSAMENTO: Como transformar os insumos na saída?

Média:

soma=soma+numeros[i] (dentro do laço “para) media=soma/100

Maior:

se(i==0 ou numeros[i]>maior){ maior=numeros[i] }

(dentro do laço “para) Menor:

(8)

se(i==0 ou numeros[i]<menor){ menor=numeros[i] }

(dentro do laço “para) Percentual de ímpares: se(nao(numeros[i]%2==0)){

impares++

}

(dentro do laço “para)

Percentual de múltiplos de 3:

se(numeros[i]%3==0){ // Procurando o percentual de nºs múltiplos de 3

mult_3++

}

(dentro do laço “para)

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS inteiro numeros[100],maior=0,menor=0, i real impares=0.0,mult_3=0.0,soma=0.0,media // ENTRADAS E PROCESSAMENTO para(i=0;i<100;i++){

escreva("Digite o elemento nº",i+1," : ") leia(numeros[i])

se(i==0 ou numeros[i]>maior){ // Procurando o maior dos nºs maior=numeros[i]

}

se(i==0 ou numeros[i]<menor){ // Procurando o menor dos nºs menor=numeros[i]

}

se(nao(numeros[i]%2==0)){ // Procurando o percentual de nºs ímpares

impares++

}

se(numeros[i]%3==0){ // Procurando o percentual de nºs múltiplos de 3

mult_3++ } soma=soma+numeros[i] } media=soma/100 // SAÍDA escreva("\nMédia: ", media) escreva("\nMaior nº: ", maior) escreva("\nMenor nº: ", menor)

escreva("\nPercentual de nºs ímpares: ", impares, "%") escreva("\nPercentual de múltiplos de 3: ", mult_3, "%") }

(9)

}

[10]. Escreva um programa que dados dois vetores de 20 números cada, gere um terceiro vetor para intercalar os elementos dos dois.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Um vetor C de 40 números com os valores de dois vetores A e B intercalados.  ENTRADA: Quais os insumos necessários para se obter a saída?

Dois vetores A e B de 20 números cada.

PROCESSAMENTO: Como transformar os insumos na saída?

Armazenar os valores dos dois vetores iniciais no terceiro vetor de forma intercalada, usando 2 variáveis de índice, k e j, k começa no zero e vai incrementando de 2 em 2, enquanto j começa em 1 e incrementa de 2 em 2:

C[k] = A[i] C[j] = B[i]

onde i é o índice do laço de repetição que vai de 0 a 19, percorrendo os elementos de A e B

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS inteiro A[20], B[20], C[40] inteiro k = 0, j = 1, i // ENTRADAS para(i=0;i<20;i++){

escreva("Digite o elemento " + i + " do vetor A: ") leia(A[i])

}

para(i=0;i<20;i++){

escreva("Digite o elemento " + i + " do vetor B: ") leia(B[i])

}

// PROCESSAMENTO E SAÍDA

para(i=0; i<20; i++){ //preenche C intercalando A e B ex:(a0 b0 a1 b1 a2 b2...) C[k] = A[i]

C[j] = B[i]

k = k + 2 //k varia assim: 0, 2, 4, 6,..., 38

j = j + 2 //j varia assim: 1, 3, 5, 7,..., 39, lembre que C tem posições de 0 a 39 }

para (i = 0; i < 40; i++) escreva (C[i] + " ") }

}

(10)

GOL, VECTRA, etc). Leia outro vetor com o consumo desses carros, isto é, quantos quilômetros cada um desses carros faz com 1 litro de combustível. Calcule e mostre:

a) O modelo do carro mais econômico.

b) Quantos litros de combustível cada um dos carros cadastrados consome para percorrer uma distância de 1000 quilômetros.

SAÍDA: Quais os resultados que o algoritmo dever fornecer? a) o modelo mais econômico

b) quantidade de litros de combustível necessária para andar 1000 km  ENTRADA: Quais os insumos necessários para se obter a saída?

5 Modelos de carros e seus respectivos rendimentos em km/L  PROCESSAMENTO: Como transformar os insumos na saída?

a) Percorrer o vetor de rendimentos e a partir de um condicional guardar o melhor rendimento. b) Considere R = distancia/litros, logo, litros = distancia/R = 1000/R

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS

real rendimentos[5], max_rendimento = 0.0, qtd_litros cadeia modelos[5]

inteiro indice = 0, ind_modelo // ENTRADA

enquanto(indice < 5){

escreva( indice+1, " - Digite o modelo do carro: " ) leia( modelos[indice] )

escreva( indice+1, " - Digite o rendimento em km/L desse modelo: " ) leia( rendimentos[indice] )

// PROCESSAMENTO & SAÍDAS

se(max_rendimento < rendimentos[indice] ){ max_rendimento = rendimentos[indice] ind_modelo = indice } indice++ }

escreva( " O modelo mais econômico é " , modelos[ind_modelo] , "\n" ) para(indice = 0; indice < 5; indice++){

qtd_litros = 1000.0/rendimentos[indice]

escreva( modelos[indice], " utiliza para percorrer 1000 km " , qtd_litros, " litros \n") } } }

PARTE 2 –MATRIZ

(11)

[12]. Sendo a matriz “M” igual a : 0 1 2 3 4 0 5 2 1 1 3 1 7 4 7 3 2 2 4 5 2 2 1 3 3 3 1 4 1 4 8 4 2 9 3

e as variáveis X = 0 e Y = 2 escreva o valor correspondente à solicitação, conforme exemplo:

a) M[X][Y]  valor corresponde a M[0] [2] que é 1 b) M[Y][X]: M[2][0] = 4

c) M[X+1][Y-1]: M[1][1] = 4 d) M[X+2][Y-1*2]: M[2][0] = 4 e) M[Y-X][Y+X]: M[2][2] = 2

f) M[M[X][Y]][M[Y][X]]  valor corresponde a M[M[0][2]][M[2][0]]  M[1][4] que é 2 g) M[M[Y-X][Y+X] ][M[Y+X][Y-X]]: M[ M[2][2] ][ M[2][2] ] = M[2][2] = 2

[13]. Desenhe uma representação para as seguintes matrizes e coloque os valores determinados nos devidos lugares: a) caracter MA[5][5][5] MA[1][3][1] = ’x’ MA[3][3][2] = ‘y’ MA[2][1][4] = ‘k’ MA[4][4][1] = ‘w’ MA[2][3][4] = ‘z’ b) inteiro MB[3][3][3] MB[2][1][1] = 2 MB[1][2][1] = 4 MB[2][1][2] = 6 MB[2][2][1] = 8 MB[0][1][2] = 0

Matrizes impressas (todos os elementos das matrizes que não possuem valores estão preenchidos com um ponto (.)): a) . . . . . . . . . . . . . . . . . . . . . . . . . x . . .

(12)

. . . . . . . . . . k . . . . . . . z . . . . . . . . . . . . . . y . . . . . . . . . . . . . . . . . . w . . . . . . . . 0 . . . . . . . . . . 4 . . . . . 2 6 . 8 .

[14]. Dada a matriz do exercício 12, gere um vetor com a média ponderada de cada linha, considerando como peso o valor da última coluna.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

 Vetor de médias ponderadas das linhas da matriz usando como pesos a última coluna da matriz

ENTRADA: Quais os insumos necessários para se obter a saída?  A matriz 5x5 do exercício 12

(13)

 Percorrer com laço de repetição a matriz tomando cada célula m[i][j] e usar a fórmula de média ponderada:

 Ex.: media ponderada linha 0 = (m[0][0]*m[0][4] + m[0][1]*m[1][4] + ... + m[0][4]*m[4][4]) /10. Pois 10 é a soma dos pesos (valores da última coluna), considere que o segundo fator de cada produto desse somatório é um dos pesos encontrados na última coluna.

PROGRAMA - PORTUGOL

programa {

funcao inicio() {

// DECLARAÇÃO DE VARIÁVEIS & ENTRADA inteiro matriz[][] = {{5,2,1,1,3},

{7,4,7,3,2}, {4,5,2,2,1}, {3,3,1,4,1}, {8,4,2,9,3}}

real mediasL[] = {0.0, 0.0, 0.0, 0.0, 0.0} //vetor de médias ponderadas das linhas inteiro lin, col, peso

// PROCESSAMENTO

para(lin = 0; lin < 5; lin++){ para(col = 0; col < 5; col++){

peso = matriz[col][4] // o peso vem da última coluna <4> mediasL[lin] += matriz[lin][col] * peso

}

mediasL[lin] = mediasL[lin]/10 //10 é a soma dos pesos que vêm da última coluna }

// SAÍDA

para(col = 0; col < 5; col++){

escreva( "Média ponderada Linha ", col, ": ", mediasL[col], "\n") }

} }

[15]. Preencha uma matriz 5x5 de números inteiros e mostre na tela apenas os elementos de cuja soma da linha e coluna resultem num número ímpar.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Elementos da matriz inserida cuja soma dos elementos tanto de sua linha como de sua coluna resultem em um valor ímpar.

ENTRADA: Quais os insumos necessários para se obter a saída? Elementos da matriz.

PROCESSAMENTO: Como transformar os insumos na saída?

Primeiramente, os vetores que armazenam a soma das linhas e das colunas devem ser anulados;

Depois, somar cada elemento inserido na matriz à posição dos vetores de soma de linha e de coluna;

Finalmente, mostrar os elementos que seguem ao critério desejado (soma dos elementos de sua linha deve ser ímpar, assim como a soma dos elementos de sua coluna).

(14)

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro tam = 5

inteiro matriz[tam][tam],soma_lin[tam],soma_col[tam], i, j // ENTRADA E PROCESSAMENTO para(i=0;i<tam;i++){ soma_lin[i]=0 soma_col[i]=0 } para(i=0;i<tam;i++){ para(j=0;j<tam;j++){

escreva("Entre com a posição [",i,"][",j,"] :") leia(matriz[i][j]) soma_lin[i]=soma_lin[i]+matriz[i][j] soma_col[j]=soma_col[j]+matriz[i][j] } } escreva("\n---\n") // SAÍDA para(i=0;i<tam;i++){ para(j=0;j<tam;j++){ se(nao(soma_lin[i]%2==0) e nao(soma_col[j]%2==0)){ escreva(matriz[i][j]) }senao{ escreva(" ") } } } } }

[16]. Preencha uma matriz 5x5 de números inteiros e calcule o determinante.  SAÍDA: Quais os resultados que o algoritmo dever fornecer?

O determinante da matriz 5x5.

ENTRADA: Quais os insumos necessários para se obter a saída? Os 25 valores da matriz 5x5.

PROCESSAMENTO: Como transformar os insumos na saída? Método de Laplace.

(15)

PROGRAMA - PORTUGOL programa { funcao inicio() { //DECLARAÇÃO DE VARIÁVEIS

inteiro matriz [5][5], detA, detA1, detA2, detA3, detA4, detA5, i, j

//ENTRADA

para (i = 0; i < 5; i++){ para (j = 0; j < 5; j++){

escreva ("Digite aqui o valor da linha " + i + " e da coluna " + j + " : ") leia (matriz [i][j])

} }

//PROCESSAMENTO

detA3 = (matriz[3][3] * matriz[4][4]) - (matriz [3][4] * matriz [4][3]) detA4 = (matriz [1][3] * matriz [4][4]) - (matriz [3][4] * matriz [4][1]) detA5 = (matriz [3][1] * matriz [4][3]) - (matriz [3][3] * matriz [4][1]) detA2 = 2*detA3 - detA4 + 2*detA5

detA1 = -2*detA2 detA = 3*detA1

//SAÍDA

escreva ("O determinante da matriz é " + detA) }

}

[17]. Preencha uma matriz 5x5 de números inteiros e mostre na tela os dados contidos em uma coluna a ser informada pelo usuário.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

Exibir os dados de uma coluna da matriz, sendo a coluna algo escolhido.  ENTRADA: Quais os insumos necessários para se obter a saída?

As 25 células da matriz e o número da coluna a ser exibida.  PROCESSAMENTO: Como transformar os insumos na saída?

Além de preencher a matriz com as entradas, usar um laço de repetição para iterar sobre a matriz M de entrada, para cada linha da matriz tomar apenas o dado da coluna informada.

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro LIN = 5, COL = 5 inteiro M[LIN][COL]

inteiro l, c, col_escolhida // ENTRADA

para(l = 0; l< LIN; l++){

para(c = 0; c < COL; c++){

(16)

leia(M[l][c]) }

}

escreva( "Informe a coluna da matriz que será exibida (de 0 a 4): " ) leia(col_escolhida)

// PROCESSAMENTO & SAÍDA para(l = 0; l < LIN; l++){ escreva( M[l][col_escolhida], " " ) } } }

[18]. Escreva um programa que leia uma matriz A de 3 x 5 em seguida uma matriz B de 3 x 5. Gere uma matriz C contendo a soma de A e B. Imprima a matriz C.

SAÍDA: Quais os resultados que o algoritmo dever fornecer? Matriz C, ou seja, soma da matriz A com a matriz B.

ENTRADA: Quais os insumos necessários para se obter a saída? Elementos da matriz A e da matriz B.

PROCESSAMENTO: Como transformar os insumos na saída? Para cada posição da matriz C [i,j]:

Elemento da matriz C = Elemento da matriz A + Elemento da matriz B C[i][j]=A[i][j]+B[i][j]  PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro lin=3,col=5

inteiro A[lin][col], B[lin][col], C[lin][col], i, j // ENTRADA

escreva("Entre com os valores da matriz A: \n") para(i=0;i<lin;i++){ para(j=0;j<col;j++){ escreva("A[",i,"][",j,"]: ") leia(A[i][j]) } }

escreva("Entre com os valores da matriz B: \n") para(i=0;i<lin;i++){

para(j=0;j<col;j++){

(17)

leia(B[i][j]) } } escreva("\nMatrizC: \n") // PROCESSAMENTO E SAÍDA para(i=0;i<lin;i++){ para(j=0;j<col;j++){ C[i][j]=A[i][j]+B[i][j] escreva(C[i][j]," ") } escreva("\n") } } }

[19]. Em uma classe há n alunos, cada um dos quais realizou k provas com pesos distintos. Dados n, k, os pesos das k provas e as notas de cada aluno, calcular a média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas.

SAÍDA: Quais os resultados que o algoritmo dever fornecer?

A média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas.

ENTRADA: Quais os insumos necessários para se obter a saída? O número de alunos, os pesos e as notas de cada prova.

PROCESSAMENTO: Como transformar os insumos na saída?

Armazenamento dos dados em uma matriz e, posteriormente, cálculo das médias ponderas e aritmética.  PROGRAMA - PORTUGOL programa { funcao inicio() { /*Criação de variáveis*/ const inteiro k=0, n=0 inteiro i, j

/*Solicitação e leitura do número de alunos na turma*/ escreva("Digite quantos alunos há na turma:")

leia(n)

/*Solicitação e leitura do numero de provas aplicadas*/ escreva ("Digite quantas provas serão aplicadas:")

leia (k)

/*Declaração e atribuição de tamanho das matrizes*/ real notas[n][k],pesos[k], mediaaluno[n], mediaprova[k]

(18)

para (j=0;j<k;j++){

escreva ("Digite o peso da P"+(j+1)+":") leia (pesos[j])

}

/*Solicitação e leitura das notas dos alunos*/ para(i=0;i<n;i++){

para(j=0; j<k; j++){

escreva ("Digite a nota "+(j+1)+" do aluno "+(i+1)+":") leia (notas[i][j])

} }

/*Zera o vetor "mediaaluno" para uso posterior em uma somatória*/ para (i=0;i<n;i++){

mediaaluno[i]=0.0 }

/*Zera o vetor "mediaprova" para uso posterior em uma somatória*/ para (j=0;j<k;j++){

mediaprova[j]=0.0 }

/*Cálculo da média de cada aluno (média ponderada das provas)*/ para (i=0; i < n; i++){

para (j=0; j < k; j++){

/*Somatório da nota previamente digitada, multiplicada pelo peso da prova*/

mediaaluno[i]=mediaaluno[i]+(notas[i][j]*pesos[j]) }

}

/*Cálculo da média aritmética (da sala toda) em cada prova*/ para (j=0; j < k; j++){

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

/*Somatório das notas de todos os alunos numa mesma prova*/ mediaprova[j]=mediaprova[j]+notas[i][j]

}

/*Divide a somatória das notas na prova pelo número de alunos para saber a média dos alunos naquela prova*/

mediaprova[j]=mediaprova[j]/n }

/*Exibe a nota média dos alunos em cada prova*/ para(j=0; j < k; j++){

escreva ("\n >> A média da prova "+(j+1)+ " é: "+mediaprova[j]) }

escreva("\n")

/*Exibe a média de cada aluno (média ponderada de todas as provas)*/ para(i=0; i < n; i++){

escreva ("\n A média do aluno "+(i+1)+ " é: "+mediaaluno[i]) }

(19)

} }

[20]. Construa um algoritmo para gerenciar a venda de ingressos (ocupação) das poltronas numeradas de um teatro, que tem 200 lugares, organizados em 20 fileiras com 10 cadeiras cada fila. Inicialize a matriz com todas as posições valendo -1 indicando que elas estão vazias. Para cada nova venda de ingresso, deve se solicitar ao usuário o número da fila e o número da poltrona. Se a poltrona estiver “vazia”, deve-se alterar seu conteúdo para o valor 1, indicando que o ingresso foi vendido. Se não estiver vazia, deve-se emitir uma mensagem: “Poltrona já foi vendida”. O programa deve funcionar por meio de um menu, com duas opções, sendo: A) Vender Ingresso B) exibir o total de ingressos vendidos e C) Encerrar o Programa.  SAÍDA: Quais os resultados que o algoritmo dever fornecer?

(A)Conseguir vender um ingresso,

(B)Exibir quantos ingressos já foram vendidos (C)Finalizar o programa.

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

Opções do usuário (A, B ou C), e para (A) informar o lugar no teatro: fileira e cadeira  PROCESSAMENTO: Como transformar os insumos na saída?

Preencher a matriz M com -1, usar desvios condicionais de acordo com a entrada do usuário, se ele digitar: (A) e o lugar pretendido, checar se a poltrona está livre (isto é, se M[fileira][cadeira] != -1), caso esteja livre efetuar a venda, incrementando uma variável contadora de vendas

(B) exibe a variável contadora de vendas

(C) Sai do laço de repetição que sempre aguardava uma entrada de dados pelo usuário

PROGRAMA - PORTUGOL programa { funcao inicio() { // DECLARAÇÃO DE VARIÁVEIS const inteiro LIN = 20, COL = 10 inteiro M[LIN][COL]

inteiro l, c, fileira, poltrona, vendidas = 0 //vendidas é o contador de vendas caracter entrada = 'Z' // Inicializa com um caracter qualquer diferente de C // ENTRADA, PROCESSAMENTO e SAÍDA são alternados.

para(l = 0; l< LIN; l++){ para(c = 0; c < COL; c++){

M[l][c] = -1 //Inicializa a matriz de lugares no teatro }

}

enquanto(entrada != 'C' ){

escreva( "Digite uma letra para cada opção: A) Comprar Ingresso; B) Mostra quantos ingressos foram vendidos; C) Sair : \n" )

leia(entrada) se(entrada == 'A' ){

escreva( "Informe uma fileira do teatro (0-19) : " ) leia(fileira)

escreva( "Informe uma poltrona dessa fileira (0-9) : " ) leia(poltrona)

se(M[fileira][poltrona] != -1){

escreva( "Essa poltrona já foi vendida \n" )

}

senao{

(20)

escreva( ">> Venda efetuada com sucesso! \n" )

vendidas++

}

}

senao se(entrada == 'B' ){

escreva( "Foram vendidos ", vendidas, " ingressos \n" ) }

senao se(entrada != 'C' ){

escreva( "ERRO: Dígito inválido, tente A, B ou C apenas \n" ) }

}

escreva( ">> Programa Encerrado com sucesso!" ) }

Referências

Documentos relacionados

Siguiendo esta línea de reflexión, en este estudio se encontró que el grupo de brasileñas y colombianas quienes cuentan con mejores ni- veles educativos que las peruanas tienen

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Barbosa (2003). Ou seja, far-se-á o exercício de compreensão do literato por meio de conceitos psicanalíticos e buscar-se-á contribuir para esta modalidade de pesquisa, uma vez

III – PUBLICAÇÃO DO EDITAL E LEILOEIRO: O edital, com fotos e a descrição detalhada do imóvel a ser apregoado, será publicado na rede mundial de computadores, no

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 sociedade local, informada dos acontecimentos relacionados à preservação do seu patrimônio e inteiramente mobilizada, atuou de forma organizada, expondo ao poder local e ao

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Finally,  we  can  conclude  several  findings  from  our  research.  First,  productivity  is  the  most  important  determinant  for  internationalization  that