Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 1 BCC701 – Programação de Computadores I – 2018-02 Lista de Exercícios 04: Estruturas Homogêneas http://www.decom.ufop.br/bcc701/ Questão 1. (2014-01) Seja o polinômio de grau n, assim definido: P(x) = a1 + a2x1 + a3x2 + a4x3 + ... + anxn-1 + an+1xn Escreva um programa que defina o vetor de coeficientes do polinômio, através de um comando de atribuição semelhante ao exemplo a seguir: a = [ 2.3 -4.5 0 3.8 ] Em seguida, o programa deverá ler um valor para x, calcular e imprimir o valor de P(x). Deverá imprimir, também, os coeficientes do polinômio. Exemplo 1: CÁLCULO DE UM POLINÔMIO Digite o valor de x: 2.5 P(2.5) = 50.425 Coeficientes do polinômio: 2.3 -4.5 0 3.8 Observação: o vetor do exemplo acima contém dados de um polinômio de grau 3, mas seu programa deve estar preparado para tratar um polinômio de qualquer grau. Questão 2. (2014-01) Escreva um programa para calcular e imprimir dados relativos à temperatura em Ouro Preto. Considere que, no início do programa, seja declarado o seguinte vetor, que contém a temperatura média de cada dia de um mês: T = [14.8 15.6 13.5 11.6 17.2 12.8 14.6 16.2 14.3 13.6 12.2 11.4 10.6 15.6 16.3 15.9 16.7 14.6 12.7 18.3 13.9 15.7 17.3 15.4 14.7 13.3 12.5 11.7 16.7 17.4] Seu programa deve calcular e imprimir os seguintes dados: a) O dia mais quente do mês e a temperatura média neste dia b) O dia mais frio do mês e a temperatura média neste dia c) Quantos e quais dias tiveram temperaturas acima de 17 graus Exemplo 1: TEMPERATURAS MÉDIAS DIÁRIAS DE OURO PRETO DURANTE UM MÊS O dia 20 foi o mais quente do mês, com uma temperatura de 18.3 graus O dia 13 foi o mais frio do mês, com uma temperatura de 10.6 graus A temperatura ficou acima de 17 graus em 4 dias, a saber : 5 20 23 30 Observação: o vetor do exemplo acima contém dados de um mês de 30 dias, mas seu programa deve estar preparado para tratar qualquer número de dias. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 2 Questão 3. (2014-01) Alguns dados referentes ao desempenho de jogadores em uma partida de futebol estão armazenados em uma matriz, onde cada linha corresponde a um jogador. Para cada jogador, são armazenados os seguintes dados: gols marcados, faltas recebidas, faltas cometidas e distância percorrida. Por exemplo, se uma linha da matriz, referente a um jogador, contém os dados [4 10 3 5055] isso significa que o jogador fez 4 gols, recebeu 10 faltas, cometeu 3 faltas e percorreu 5055 metros durante a partida. Escreva um programa que definida uma matriz, através de um comando de atribuição semelhante ao exemplo a seguir: D = [ 2 3 1 8000; 4 2 6 12000; 3 4 1 10000] O programa deve calcular e imprimir os seguintes dados: a) a média de gols dos jogadores b) o menor número de faltas recebidas por um jogador c) o número total de faltas cometidas d) a distância média percorrida pelos jogadores. Exemplo 1: ESTATÍSTICA ESPORTIVA Resultados: Média de Gols: 3 Menor Número de Faltas Recebidas: 2 Faltas Cometidas: 8 Distância Média Percorrida: 10000 Observação: a matriz do exemplo acima contém dados de 3 jogadores, mas seu programa deve estar preparado para tratar uma matriz referente a um número qualquer de jogadores. Questão 4. (2014-01) O traço de uma matriz quadrada A, de dimensão n x n, é a soma dos elementos de sua diagonal principal, ou seja: 𝒕𝒓𝒂ç𝒐 𝑨 = 𝒂𝒊,𝒊 𝒏 𝒊!𝟏 Escreva um programa que defina uma matriz quadrada A , através de um comando de atribuição semelhante ao exemplo a seguir: A = [ 2.5 0.23 0; 0 3.82 4; 0 18 0 ] Complete o programa para: 1) imprimir a matriz; 2) criar um vetor constituído pelos elementos da diagonal principal de A e imprimi-lo; 3) calcular o traço da matriz; 4) determinar o número de elementos fora da diagonal principal que são diferentes de 0. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 3 Exemplo 1: Matriz A: 2.50 0.23 0.00 0.00 3.82 4.00 0.00 18.00 0.00 Vetor da diagonal: 2.50 3.82 0.00 Traço(A) = 6.32 Elementos NÃO nulos fora da diagonal principal: 3 Observação: a matriz do exemplo acima é de ordem 3, mas seu programa deve estar preparado para tratar uma matriz de qualquer ordem. Questão 5. (2014-02) O coeficiente de atrito, µ, pode ser determinado em um experimento medindo-se a força F necessária para mover uma massa m . Quando F é medida e m é conhecida, o coeficiente de atrito pode ser calculado por: 𝝁 = 𝑭 𝒎×𝒈 , 𝑜𝑛𝑑𝑒 𝑔 = 9,81 𝑚/𝑠 ! Unidades: F em Newton (N); m em quilograma (kg). Em seis experimentos foram medidos os valores de F Experimento 1 2 3 4 5 6 m 2 4 5 10 20 50 F 12,5 23,5 30 61 117 294 Escreva um programa em Scilab para determinar o coeficiente de atrito em cada experimento, armazenando os valores calculados em um vetor. Também, calcule o valor médio dos coeficientes de atritos de todos os experimentos. Considere que dois vetores estão armazenados na memória, um para os valores de m , e outro para os valores de F , conforme ilustrado a seguir: m = [ 2 4 5 10 20 50 ] F = [ 12.5 23.5 30 61 117 294 ] As impressões dos resultados devem seguir o modelo de execução abaixo. Exemplo 1: EXPERIMENTO DOS COEFICIENTES DE ATRITO VETOR DOS COEFICIENTES: 0.637105 0.598879 0.611621 0.621814 0.59633 0.599388 VALOR MÉDIO DOS COEFICIENTES: 0.610856 at rito F Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 4 Questão 6. (2014-02) Escreva um programa que leia as temperaturas médias mensais de duas cidades, ao longo de um determinado ano, e imprima os nomes dos meses nos quais as duas cidades têm a mesma temperatura média. Um exemplo de execução do programa é ilustrado a seguir, supondo que são lidos os valores de temperaturas médias apresentados na tabela abaixo. Mês 1 2 3 4 5 6 7 8 9 10 11 12 Cidade1 30 24 18 12 22 25 22 19 24 26 29 34 Cidade2 30 27 20 16 25 25 26 22 24 28 29 38 Exemplo 1: Temperaturas médias mensais em 2 cidades ----------------------------------------- Temperaturas médias mensais da cidade 1: [30,24,18,12,22,25,22,19,24,26,29,34] Temperaturas médias mensais da cidade 2: [30,27,20,16,25,25,26,22,24,28,29,38] Meses em que a temperatura média foi igual nas duas cidades: Jan Jun Set Nov Questão 7. (2014-02) A posição de navios em uma determinada região costeira pode ser representada por uma matriz M , na qual cada posição (x,y) corresponde à coordenada (x,y) da região representada. O valor 1 (um) na linha x e coluna y da matriz indica a existência de um navio na coordenada (x, y) da região; 0 (zero) indica que não há navio. Considere que a matriz M foi lida e está na memória do computador, tal como ilustrado na figura a seguir: 𝑀 = 0 0 0 0 𝟏 0 𝟏 0 0 0 0 0 0 0 0 𝟏 0 0 0 0 0 0 𝟏 0 0 0 0 0 0 0 0 0 0 0 0 𝟏 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 𝟏 0 0 0 0 0 0 0 0 0 0 0 0 0 𝟏 0 0 0 0 0 0 0 0 𝟏 0 0 0 0 Conforme esta matriz M , existem 8 navios, nas seguintes coordenadas: (2, 2) (2, 8) (3, 1) (3, 4) (6, 3) (6, 9) (8, 5) (8, 8). Escreva um programa Scilab que leia uma matriz P, com 5 linhas e 2 colunas, representando 5 palpites de um usuário sobre 5 posições em que existe um navio: cada linha representa um palpite, sendo que a primeira coluna refere-se à coordenada x e a segunda coluna à coordenada y da posição do navio. Por exemplo, se a matriz de palpites do jogador for [ 2, 2; 1, 5; 3, 1; 6, 6; 8, 1], a matriz de palpites P seria: 𝑃 = 22 1 5 3 1 6 6 8 1 Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 5 O programa deve determinar quantos palpites correspondem a posições em que realmente existe um navio na matriz M, ou seja, quantas coordenadas de navios o usuário acertou. A seguir, um exemplo de execução do programa. Não é necessária qualquer validação de entrada de dados. Exemplo 1: LOCALIZAÇÃO DE NAVIOS LEITURA DA MATRIZ (5X2) DIGITE SEUS 5 PALPITES: [ 2, 2; 1, 5; 3, 1; 6, 6; 8, 1 ] POSIÇÃO (2, 2): ACERTOU ! POSIÇÃO (1, 5): ERROU ... POSIÇÃO (3, 1): ACERTOU ! POSIÇÃO (6, 6): ERROU ... POSIÇÃO (8, 1): ERROU ... QUANTIDADE DE ACERTOS: 2 Questão 8. (2014-02) Uma matriz triangular superior é uma matriz quadrada onde todos os elementos abaixo da diagonal principal são nulos (com valor zero), conforme ilustrado a seguir: 2 3 8 9 0 1 4 6 0 0 2 1 0 0 0 8 Escreva um programa Scilab que leia uma matriz quadrada, tal como mostrado no exemplo a seguir, e indique se ela é uma matriz triangular superior ou não. O programa deve também imprimir a dimensão da matriz lida. Não é necessário verificar se a matriz lida á uma matriz quadrada. Exemplo 1: Classificando uma Matriz Quadrada --------------------------------- Digite a matriz: [ 2 3 8 9; 0 1 4 6; 0 0 2 1; 0 0 0 8 ] Dimensão da matriz: 4x4 A matriz é triangular superior ! Exemplo 2: Classificando uma Matriz Quadrada --------------------------------- Digite a matriz: [ 1 1 1; 1 0 1; 0 0 1 ] Dimensão da matriz: 3x3 A matriz não é triangular superior. Diagonal principal Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 6 Questão 9. (2015-01) A administração do RU da UFOP fez uma pesquisa sobre a qualidade das refeições. Vários alunos responderam a pesquisa com números de 1 a 5, que representam uma escala de satisfação, a saber: 1 – péssima; 2 – ruim; 3 – boa; 4 – muito boa; e 5 – excelente. As respostas dadas pelos alunos que participaram da pesquisa estão armazenadas em um vetor respostas, tal como o mostrado a seguir: respostas = [1 2 5 4 2 1 5 4 1 2 5 3 2 1 2 4 2 3 5 1 4 1 2 4 5 5 1 2 3 4 3 4 2 1 5 1 2 4 5 3 1 2 5 4 1 1 2 5 4 3] Escreva o código do programa, de modo que o programa gere um vetor contendo o número de vezes que ocorreu cada resposta. Ou seja, esse vetor deve conter, em cada posição i, para 1<=i<=5, o número de vezes que ocorreu a resposta i. O programa deve imprimir os dados armazenados conforme o formato apresentado no exemplo de execução a seguir. Exemplo 1: Pesquisa sobre a Qualidade do RU Resposta Frequencia 1 12 2 12 3 6 4 10 5 10 Questão 10. (2015-01) Uma imagem em preto e branco pode ser armazenada em um computador na forma de uma matriz, onde 0 representa a cor preta e 1 representa a cor branca. Por exemplo, a matriz a seguir representaria a imagem, em preto e branco, de um triângulo. 0001000 0010100 0100010 1111111 Escreva um programa que leia uma matriz que represente uma imagem em preto e branco e inverta as cores na imagem, isto é, troque cada 0 por 1 e cada 1 por 0. Por exemplo, se a matriz lida como entrada for a matriz acima, o resultado impresso pelo programa deverá ser a seguinte matriz: 1110111 1101011 1011101 0000000 Abaixo, um exemplo de execução do programa. Exemplo 1: Digite uma matriz imagem: [ 0 0 0 1 0 0 0; 0 0 1 0 1 0 0; 0 1 0 0 0 1 0; 1 1 1 1 1 1 1 ] Imagem com cores invertidas: 1. 1. 1. 0. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 1. 0. 1. 1. 1. 0. 1. 0. 0. 0. 0. 0. 0. 0. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 7 Questão 11. (2015-01) O Sr. Apu Nahasapeemapetilon é proprietário de uma vendedora de acessórios para computador, a Kwik E' Mart. Esta empresa possui 4 lojas e o Sr. Apu mantém um estoque mínimo de produtos em todas as lojas: HD (100 unidades); impressora (40 unidades); monitor (50 unidades); notebook (30 unidades); e tablet (80 unidades). Estas informações podem ser representadas pelos vetores: produto = [“HD” “impressora” “monitor” “notebook” “tablet”] minimo = [ 100 40 50 30 80 ] Conforme representado nesses vetores, vemos que a quantidade mínima de HDs é 100 e a quantidade mínima de notebooks é 30. Os estoques das 4 lojas são representados por uma matriz (estoque), onde cada linha representa o estoque de uma determinada loja. Seja a seguinte matriz estoque: 41 48 32 32 81 estoque da loja 1 102 38 50 15 85 estoque da loja 2 100 40 50 30 80 estoque da loja 3 100 40 50 35 78 estoque da loja 4 Considere um programa no qual os vetores produto e mínimo, assim como a matriz estoque, já foram lidos, no início do programa. Escreva o restante do código desse programa para verificar o estoque de cada produto em cada uma das lojas, verificando a ocorrência de uma das seguintes possíveis situações em cada loja: a) todos os produtos estão de acordo com o estoque mínimo. Neste caso, é impressa uma mensagem informando tal situação; ou b) são impressos os produtos cujo estoque está abaixo do estoque mínimo e a quantidade que falta para atingir esse estoque. Abaixo, um exemplo de execução do programa. Exemplo 1: RELATÓRIO DO ESTOQUE Loja Nro 1 Produto: HD - Faltam 59 unidades Produto: monitor - Faltam 18 unidades Loja Nro 2 Produto: impressora - Faltam 2 unidades Produto: notebook - Faltam 15 unidades Loja Nro 3 Todos os produtos possuem o estoque mínimo! Loja Nro 4 Produto: tablet - Faltam 2 unidades Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 8 Questão 12. (2015-01) Considere ainda os dados referentes à loja do Sr. Apu Nahasapeemapetilon apresentados na questão anterior. Considere um programa em que os dados contidos no vetor produto e na matriz estoque já foram lidos, no início do programa. Suponha que esse programa também lê, no início, um vetor preco, contendo o preço unitário de cada um dos produtos do estoque, tal como o vetor a seguir: preco = [ 102.0 250.0 430.0 980.0 540.0 ] Escreva o restante do código desse programa, de maneira que ele leia o número de uma das lojas, ou seja, 1 ou 2 ou 3 ou 4, e imprima as quantidades de cada produto no estoque dessa loja, tal como mostrado no exemplo de execução a seguir. Além disso, o programa deve imprimir o valor total do estoque da loja, isto é, o somatório dos preços unitários de todos os produtos existentes na loja. O exemplo abaixo ilustra a execução do programa, considerando o vetor preco mencionado acima. OBS: Não é necessária qualquer validação de dados. Exemplo 1: Estoque e Custo Total da Loja DIGITE A LOJA (1, 2, 3, OU 4): 3 HD: 100 impressora: 40 monitor: 50 notebook: 30 tablet: 80 Custo total do estoque: R$ 114300.00 Questão 13. (2015-02) A tabela a seguir contém dados de emissão de CO2 de 7 países, em toneladas per capita, no ano de 2011: Pais Canadá Brasil EUA Rússia índia Japão China Emissão CO2 14.07 2.23 16.85 12.60 1.70 9.33 6.60 fonte: http://mdgs.un.org/unsd/mdg/SeriesDetail.aspx?srid=751 Considere um programa no qual uma tabela, análoga à tabela acima, é representada por meio de 2 vetores declarados no início do programa – paises e CO2 – cada qual com n posições, sendo que a emissão de CO2 de um dado país do vetor paises é dada na posição correspondente do vetor CO2, tal como mostrado a seguir: paises = ["Canadá", "Brasil", "EUA", ...] CO2 = [ 14.07, 2.23, 16.85, ...] Escreva o programa de maneira a calcular e imprimir os seguintes dados:1. a média de emissão de CO2 per capta dos n países; 2. o nome do país que é o maior emissor de CO2 per capita e a quantidade emitida. Um exemplo de execução do programa é mostrado a seguir, supondo-se que a tabela representada no programa é a mostrada acima. Exemplo 1: Emissão de CO2 per capita (em ton/per capita) Emissão média nos países considerados = 9.054 Pais maior emissor = EUA (16.85) Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 9 Questão 14. (2015-02) Em um jogo de Batalha Naval, o oceano pode ser representado por uma matriz de duas dimensões, na qual cada posição de índice (x,y) contém informação sobre o tipo de navio localizado nesta posição do oceano: 1 representa um Couraçado; 2 representa um Contratorpedeiro; 3 representa uma Fragata e 0 indica que não existe navio na posição. Por exemplo, no oceano representado pela matriz M abaixo, existem 2 Couraçados, nas posições (3,4) e (5,8); 3 Contratorpedeiros, nas posições (5,3), (5,6) e (6,1); e também 2 Fragatas, nas posições (1,2) e (5,5). x↓ y→ 1 2 3 4 5 6 7 8 1 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 4 0 0 0 0 0 0 0 0 5 0 0 2 0 3 2 0 1 6 2 0 0 0 0 0 0 0 No nosso jogo de Batalha Naval, um jogador tenta acertar posições de navios no oceano, dando n palpites de posições (x,y). Caso exista um navio em uma posição informada, ele soma pontos, conforme o tipo de navio existente, de acordo com a seguinte tabela: Número Navio Pontos 1 Couraçado 20 2 Contratorpedeiro 30 3 Fragata 10 Escreva um programa para a Batalha Naval, onde: • uma matriz M, que representa o oceano, é declarada no início do programa; • o número n é digitado pelo teclado, seguido de n pares (x, y) • o programa calcula e imprime a pontuação do jogador; • não é necessário validar a entrada de dados, isto é, supõe-se que o jogador irá digitar posições válidas. Nos 2 exemplos de execução a seguir, supõe-se que o oceano é representado pela matriz M mostrada acima. Exemplo 1: Batalha Naval Digite o número de jogadas: 3 Jogada 1 digite x: 1 digite y: 1 Jogada 2 digite x: 4 digite y: 2 Jogada 3 digite x: 6 digite y: 8 Pontuação Obtida: 0 pontos Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 10 Exemplo 2: Batalha Naval Digite o número de jogadas: 2 Jogada 1 digite x: 2 digite y: 6 Jogada 2 digite x: 5 digite y: 6 Pontuação Obtida: 30 pontos Questão 15. (2015-02) Você vai escrever um programa para verificar se resultados de exames de sangue estão dentro dos padrões desejados. Os itens do exame de sangue a serem verificados são: Glicose (de 60 a 99 mg/dl); ureia (10 a 50 mg/dl); creatinina (0,4 a 1.4 mg/dl); colesterol (0 a 200 mg/dl). Essas informações estão podem ser representadas pelos vetores: tipo = ["GLICOSE" "UREIA" "CREATININA" "COLESTEROL"] minimo = [ 60 10 0.4 0 ] máximo = [ 99 50 1.4 200 ] Os dados de exames de pessoas são representados por uma matriz (exames), onde cada linha representa o exame de uma pessoa e cada coluna representa um tipo de exame, na mesma ordem em que esses tipos ocorrem no vetor tipo. Por exemplo, a matriz exames a seguir representa exames de 4 pessoas: 120 30 0.5 260 Exame da pessoa 1 82 38 0.7 180 Exame da pessoa 2 90 40 0.8 170 Exame da pessoa 3 90 20 0.7 230 Exame da pessoa 4 Suponha que os vetores tipo, mínimo e máximo são declarados no início do programa. A matriz de exames deve ser lida do teclado, durante a execução do programa. O programa deve então determinar, para cada exame contido em uma linha da matriz exames, a ocorrência de uma das seguintes possíveis situações: a) todos os tipos de exame estão dentro dos limites mínimo e máximo desejável. Neste caso, é impressa uma mensagem informando que o exame está normal; ou b) algum tipo de exame não está dentro dos limites desejáveis. Neste caso, devem ser impressos os tipos de exames nessa situação e os valores correspondentes. Exemplo 1: Digite exames:[120 30 .5 260; 82 38 .7 180; 90 40 .8 170; 90 20 .7 230] RELATÓRIO DE EXAMES Paciente 1 Glicose: 120 Colesterol: 260 Valores fora dos limites Paciente 2 Exame normal Paciente 3 Exame Normal Paciente 4 Colesterol: 230 Valores fora dos limites Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 11 Questão 16. (2016-01) A tabela a seguir mostra resultados dos últimos n jogos entre o Cruzeiro e o Atlético: Atlético Cruzeiro 2 1 2 3 2 0 0 1 ... ... 1 1 2 3 Escreva um programa que leia uma matriz com n linhas e 2 colunas, representando a tabela acima, e calcule e imprima: o número de jogos vencidos pelo Atlético, o número de jogos vencidos pelo Cruzeiro, e o número de empates. Finalmente, imprima uma mensagem informando qual é o melhor time, isto é, aquele com maior número de vitórias – nenhuma mensagem deve ser impressa caso os dois times tenham mesmo numero de vitórias. Dois exemplos de execução do programa são apresentados a seguir. Exemplo 1: TABELA DE RESULTADOS DE JOGOS: [2 1; 2 3; 2 0; 0 1; 1 1; 2 3] VITORIAS DO ATLÉTICO = 2 VITORIAS DO CRUZEIRO = 3 EMPATES = 1 CRUZEIRO É O MELHOR TIME! Exemplo 2: TABELA DE RESULTADOS DE JOGOS: [2 0; 1 1; 2 2; 0 1; 0 0] VITORIAS DO ATLÉTICO = 1 VITORIAS DO CRUZEIRO = 1 EMPATES = 3 Questão 17. (2016-01) Um cromossomo com n genes pode ser representado por um vetor de n posições. Considerando os genes 0 e 1, e dois cromossomos de tamanho n = 16 temos: C1 = [ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ] C2 = [ 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 ] Definimos cruzamento de C1 e C2 através da combinação de seus genes da seguinte maneira: 1) Escolher uma posição válida k, 1 ≤ k ≤ n para indicar o ponto de corte; 2) Copiar os elementos do vetor C1, posições de 1 até k, para um vetor C3; 3) Copiar os elementos do vetor C2, posições de (k+1) até n, para o mesmo vetor C3. 4) O vetor C3 é o vetor resultante do cruzamento dos vetores C1 e C2. Desta forma, o cruzamento de C1 e C2, com ponto de corte k = 8, resultaria em: C3 = [ 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 ] Escreva um programa Scilab para ler dois vetores C1 e C2, ler o valor de corte k e efetuar o cruzamento desses vetores. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 12 Caso o valor lido para k não seja válido, deve-se repetir a solicitação da entrada de k.até que um valor válido seja fornecido. Observe que k é um valor inteiro, mas não é necessário verificar se k é inteiro. A seguir um exemplo de execução do programa, com os mesmos vetores do exemplo acima, mas com outro valor de k: Exemplo 1: Digite o primeiro vetor: [ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ] Digite o segundo vetor: [ 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 ] Digite o valor do ponto de corte: 11 Vetor resultante do cruzamento: 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 Questão 18. (2016-01) Um site de compras pela internet é avaliado pelos consumidores de acordo com uma escala de 1 a 5, com o seguinte significado: 5 = MUITO BOM, 4 = BOM, 3 = REGULAR, 2 = RUIM, 1 = PÉSSIMO. Escreva um programa que leia um vetor de respostas de avaliação de consumidores e imprima os percentuais de cada tipo de resposta, conforme ilustrado nos exemplos a seguir. Caso o vetor de respostas de consumidores seja vazio, o programa deve imprimir a mensagem “Nenhuma avaliação para este site”. Exemplo 1: AVALIAÇÃO DE SITE DE COMPRAS Respostas dos consumidores: [5 5 4 1 4 3 3 5 5 5 4 2 2 5 5 5 4 5 4 5] Avaliação: | MUITO BOM | BOM |REGULAR | RUIM | PÉSSIMO | | 50% | 25% | 10% | 10% | 5 | Exemplo 2: AVALIAÇÃO DE SITE DE COMPRAS ----------------------------- Respostas dos consumidores: [ ] Nenhuma avaliação para este site. Questão 19. (2016-01) Observe a matriz abaixo, que contém os índices (percentuais) de variação de preços de um conjunto de itens do orçamento familiar, obtidos em uma pesquisa durante um período de 6 meses. Item Mês 1 2 3 4 5 6 Alimentos e bebidas 1.3% -1% 2% 3% -0.8% 0.5% Transportes 0.5% 0% 0.7% 0% 0.8% 0% Habitação 0.6% 0.3% 0.4% -0.3% 1.2% 0.8% Saúde e Educação 2.3% 0.5% 0.7% 1.1% 0.4% 1.0% Vestuário 1.0% 0.6% 0.4% -0.5% 1.0% 1.5% Vamos supor, de forma simplificada, que o índice de variação de preço de um dado item, no período de pesquisa, seja calculado como a soma das variações mensais. Por exemplo, o índice para o item “alimentos e bebidas” seria: 1.3-1+2+3-0.8+5 = 5 Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 13 Paralelamente, foi feita outra pesquisa para determinar o percentual do orçamento familiar que é destinado a cada um desses itens (peso do item no orçamento). O quadro abaixo sintetiza o resultado das duas pesquisas: Item Variação de Preço Peso Alimentos e bebidas 5% 26% Transportes 2% 20% Habitação 3% 18% Saúde e Educação 6% 26% Vestuário 4% 10% Total 100% Esses dados permitem calcular o índice de inflação no período como: I = (5x26 + 2x20 + 3x18 + 6x26 + 4x10) / 100 = 4.2 Escreva um programa para ler os seguintes dados: 1) um vetor contendo os pesos dos itens 2) uma matriz contendo as variações de preço desses itens em um período de n meses. O programa deverá calcular: 1) o percentual de variação de preço de cada item, armazenando-os em um vetor 2) o índice de inflação. Um exemplo de execução é mostrado a seguir, considerando 4 itens, em um período de 3 meses. Exemplo 1: INDICE DE INFLAÇÃO Pesos dos itens: [40 25 15 20] Variação mensal de custo dos itens: [2 3 4; 3 2 2; 3 5 4; 2 3 3] Índice de inflação = 8.75% Questão 20. (2016-02) Na avaliação de um professor pelos alunos, a nota de cada quesito varia em uma escala de 1 até 5 e só possui valores inteiros. Escreva um programa que leia um vetor contendo as notas dadas a um professor pelos alunos. Abaixo apresenta-se uma ilustração de avaliação realizada: avaliacao = [ 3 3 2 3 3 1 2 3 3 3 3 2 4 1 5 5 3 ] Seu programa deve: 1) Armazenar em uma matriz chamada freq a frequência de ocorrência de cada nota variando de 1 a 5, conforme ilustrado a seguir para o vetor avaliacao previamente ilustrado: 1 2 2 3 3 9 4 1 5 2 2) Imprimir a matriz freq conforme ilustrado no exemplo de execução a seguir. OBS: Você não precisa validar os dados de entrada, podendo supor que todas as posições do vetor de notas dadas pelos alunos contêm um valor na faixa de 1 a 5. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 14 Exemplo 1: AVALIAÇÃO DE PROFESSOR Notas dadas pelos alunos: [ 3 3 2 3 3 1 2 3 3 3 3 2 4 1 5 5 3] Nota Frequência 1 2 2 3 3 9 4 1 5 2 Questão 21. (2016-02) Considere dois vetores já armazenados na memória do computador. Um vetor com os nomes dos alunos e outro com as notas semestrais de BCC701 desses alunos. Uma forma de ilustrar esses vetores é apresentada a seguir: nome = [“Skywalker” “Kenobi” “Solo” “Vader” “Organa” “Amidala” “Finn” “Rey” ] nota = [ 5.8 10.0 8.5 4.5 3.2 6.5 3.5 6.4 ] Escreva um programa que: 1) Gere um vetor de índices, Index. Este vetor contém as posições dos elementos do vetor nota cujos valores são maiores ou iguais a 6.0 (critério de aprovação); 2) Utilizando o vetor Index (ou seja, sem utilizar o vetor nota nesse ponto), o programa imprime o nome dos alunos que foram aprovados (a partir do vetor nome). A seguir o vetor Index é ilustrado considerando os vetores nome e nota ilustrados acima: Index = [ 2 3 6 8 ] Observações: • Considere a possibilidade do vetor Index não conter elementos, ou seja, não há aprovados. Neste caso, imprima uma mensagem relatando a situação e finalize o programa. • No exemplo acima, os vetores tem tamanho 8, mas seu programa deve considerar que os vetores nome e nota podem ter um tamanho qualquer, diferente de zero. A seguir, duas execuções do programa. Exemplo 1: UST - Universidade Sideral de Tatooine Alunos aprovados: Kenobi Solo Amidala Rey Exemplo 2: UST - Universidade Sideral de Tatooine Nenhum aluno foi aprovado! Fim do Programa. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 15 Questão 22. (2016-02) Escreva um programa que leia uma matriz m e, caso m seja uma matriz quadrada, imprima a soma de todos os valores da diagonal principal e da diagonal secundária de m. Se m não for uma matriz quadrada, imprime uma mensagem de erro, tal como ilustrado a seguir. Exemplo 1: SOMA DAS DIAGONAIS Digite uma matriz quadrada: [1 2; 3 4; 5 6] Erro: A matriz não é quadrada. Exemplo 2: SOMA DAS DIAGONAIS Digite uma matriz quadrada: [1 2 3;4 5 6; 7 8 9] Soma = 30 Questão 23. (2016-02) A UFOP promoveu uma gincana entre equipes de alunos, na qual cada equipe deveria cumprir 10 tarefas. Você vai escrever um programa para apurar o resultado da gincana, conforme explicado a seguir. A pontuação atribuída a cada tarefa é especificada na forma de um vetor declarado no início do programa, contendo 10 colunas, no qual cada coluna contém a pontuação da tarefa correspondente. O vetor deverá ser o seguinte (devendo estar declarado no programa): pontuacao = [ 10 7 20 5 12 30 9 10 15 30 ] O programa deve ler uma matriz que representa as tarefas que foram concluídas pelas equipes, onde cada linha corresponde a uma equipe e cada coluna corresponde a cada uma das 10 tarefas. Cada posição (i,j) da matriz contém 1, se a equipe i conseguiu realizar a tarefa j, ou contém 0 caso contrário. A cada execução, podem haver números diferentes de equipes, o que é identificado através do número de linhas da matriz informada pelo usuário. Para ilustrar, uma matriz representando as tarefas realizadas por 3 equipes poderia ser como a seguinte: gincana = [ 1 0 0 1 1 0 1 1 0 1; 0 1 0 1 1 1 0 0 1 0; 1 1 1 0 0 0 1 1 0 0 ] O programa deve imprimir uma tabela mostrando a pontuação de cada equipe, e também indicar qual foi a equipe vencedora, tal como mostrado no exemplo a seguir. Exemplo 1: Tarefas realizadas por equipe: [1 0 1 1 0 0 1 1 0 1; 1 0 0 0 1 1 1 0 1 0; 1 1 1 0 0 1 1 0 1 1; 1 0 0 1 1 1 1 0 0 0 ] Equipe Pontos 1 84 2 76 3 121 4 66 A equipe 3 é a vencedora! Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 16 Questão 24. (2017-02) A CEMIG está treinando um novo funcionário para realizar as leituras de consumo residencial de energia. Esse funcionário percorreu um roteiro pré-estabelecido e registrou o consumo das residências. Outro funcionário, mais experiente, veio logo atrás fazendo a leitura das mesmas residências, na mesma ordem. Os resultados obtidos pelos dois foram armazenados em dois vetores, um para cada funcionário, e são fornecidos através de duas entradas de dados pelo usuário. Escreva um programa para calcular os valores absolutos das diferenças entre as leituras dos dois funcionários e armazená-las em outro vetor, determinando também a média dos valores armazenados no novovetor e imprimindo os resultados na tela, conforme o exemplo a seguir. DICA: O valor absoluto de um número é obtido com a função abs do Scliab da seguinte maneira: abs(valor), por exemplo, abs(10) resulta em 10, abs(-10) também resulta em 10, e abs(x-y) resulta no valor absoluto da diferença de duas variáveis existentes, x e y. Exemplo 1: Leituras do primeiro funcionário.: [ 1 2 4 5 6 ] Leituras do Segundo funcionário..: [ 3 2 5 3 7 ] As diferenças observadas são: [ 2 0 1 2 1 ] Média das diferenças observadas: 1.20 Questão 25. (2017-02) A Dona Marina é uma confeiteira muito conhecida em sua cidade e contrata revendedores para vender seus bolinhos em grandes eventos populares. Há apenas dois produtos comercializados, o bolinho e uma caixinha de suco. Ela deseja premiar o vendedor que lhe proporciona o maior lucro. Para isso, ela encomendou um programa em que ela possa fornecer a quantidade de vendas de bolinho e a quantidade de vendas de suco realizadas por cada um dos revendedores e o lucro com cada um dos produtos. Considere que as quantidades de vendas deverão ser armazenadas em vetores, diretamente definidos a partir de entradas do usuário. Seu programa deve criar um outro vetor contendo o lucro obtido por cada revendedor e obter aquele que conseguiu o maior valor, conforme o exemplo a seguir. Considere também que sempre haverá um vencedor único, ou seja, não é necessário verificar se houve empate. Exemplo 1: Informe as quantidades de bolinho: [ 5 2 3 10 8 ] Informe as quantidades de suco: [ 7 3 2 8 10 ] Informe o lucro com bolinho: 4.5 Informe o lucro com suco: 2.8 O lucro dos vendedores foi: 1: 42.10 2: 17.40 3: 19.10 4: 67.40 5: 64.00 O vendedor premiado foi o 4. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 17 Questão 26. (2017-02) Escreva um programa que, a partir de uma matriz contendo a produção semanal dos operadores de máquina de uma fábrica em um determinado período e imprima: • O total de operadores e de semanas processadas; • O total de produção de cada operador (todas as semanas somadas); • O total de produção da fábrica, ao longo de todas as semanas informadas. Na matriz fornecida como entrada pelo usuário, cada linha representa um operador e cada coluna representa uma semana. O total de semanas e de operadores não é conhecido de antemão, então o programa deve encontrar estas informações antes de começar as contagens. O exemplo de execução a seguir ilustra um caso em que a matriz corresponde à produção de 4 operadores, durante 5 semanas. OBS: Não é permitido usar função sum do Scilab, os cálculos devem ser feitos usando estruturas de repetição. Exemplo 1: Produção: [10 31 28 11 13; 17 42 33 11 8; 5 34 36 10 15; 16 43 9 44 9] Total de operadores: 4 Total de semanas: 5 Produção por operador: Operador 1 = 93 Operador 2 = 111 Operador 3 = 100 Operador 4 = 121 Total geral de produção: 425 Questão 27. (2018-01) Na cidade de Ouro Preto existem postos de gasolina que vendem seus produtos sem seguir uma padronização de preços. Escreva um programa Scilab que: 1. Leia o vetor POSTO, que armazena os nomes dos postos de gasolina e um vetor PRECO, que armazena o preço do litro da gasolina, em reais, vendida pelos postos. Desta forma, um posto cujo nome está armazenado na posição k, POSTO(k), tem a gasolina com o preço armazenado em PRECO(k). Os valores pertencentes a cada vetor devem ser lidos pelo teclado a partir de uma única entrada do usuário; 2. O programa deverá calcular e imprimir o preço médio do litro de gasolina de todos os postos; 3. O programa deverá gerar um vetor que conterá os índices (as posições) dos nomes dos postos que vendem o litro de gasolina com o preço menor ou igual ao preço médio calculado no item 2. Este vetor de índices será utilizado para imprimir o nome e o preço da gasolina correspondente ao posto; 4. As impressões, elemento por elemento, devem seguir o modelo de execução apresentado a seguir. Abaixo, exemplos de execução do programa. Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 18 Exemplo 1 Vetor dos nomes: ["MadMax" "FuryRoad" "Furious" "Valkyrie" "Petrojuice"] Vetor dos preços: [ 3.95 3.44 3.82 3.12 4.01 ] Preço médio (litro): R$ 3.67 Vetor de índices: [ 2 4 ] Preços <= ao preço médio: POSTO VALOR (R$) FuryRoad 3.44 Valkyrie 3.12 Exemplo 2 Vetor dos nomes: ["Xell" "Petroroubo" "TChoco" "YpiRango" "Batizada"] Vetor dos preços: [ 3 2 3 4 1 ] Preço médio (litro): R$ 2.60 Vetor de índices: [ 2 5 ] Preços <= ao preço médio: POSTO VALOR (R$) Petroroubo 2.00 Batizada 1.00 Questão 28. (2018-01) Escreva um programa para fazer uma série de pesquisas de preços de produtos alimentícios. Inicialmente o programa deve ler as informações através de entradas do usuário, armazenando-as em vetores conforme exemplo a seguir. Os vetores definidos guardam uma correspondência nas informações, ou seja, em uma determinada posição k temos a descrição do produto em descr(k), o seu preço em preco(k) e o seu código em cod(k). Seu programa deve realizar uma série de pesquisas a partir do código do produto digitado pelo usuário. Caso o código seja encontrado, o sistema imprime a sua descrição e o seu preço. Caso o código não seja encontrado, o sistema emite uma mensagem “Código não encontrado!”. O programa deve encerrar sua execução quando o usuário digitar um valor menor ou igual a zero para o código a ser pesquisado. Exemplo 1 Códigos: [ 12 45 58 14 19 11 18 ] Preços: [ 10.5 5.4 4.5 8.7 5.3 17.5 3.0 ] Descrições: ['Açúcar', 'Feijão', 'Óleo', 'Maionese', 'Macarrão', 'Manteiga', 'Detergente'] Digite o código do produto: 58 Descrição: Óleo Preço: R$ 4.50 Digite o código do produto: 99 Código não encontrado! Digite o código do produto: 45 Descrição: Feijão Preço: R$ 5.40 Digite o código do produto: -1 Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 19 Questão 29. (2018-01) Indiana Jorge é um caçador de mitos que deseja desvendar o mito de que um raio não cai duas vezes em um mesmo lugar. Para isso, ele saiu à procura de uma cidade que registre fielmente a incidência de raios. De posse destes dados ele mapeou a cidade em quadrados de 1 metro de lado, obtendo um mapa retangular. O registro de raios é feito de acordo com as coordenadas dos quadrados considerando os índices de linha e de coluna, conforme representado na figura a seguir. Implemente um programa que receba como entrada as dimensões em metros da cidade (comprimento e largura) e a quantidade de raios registrados. Em seguida, leia as coordenadas de cada um dos raios registrados contabilizando a quantidade de raios que caiu em cada quadrado. As coordenadas de cada raio são definidas em um vetor contendo o valor da linha e da coluna, respectivamente, em uma única entrada do usuário (vide exemplo). O programa deve identificar se existe algum quadrado onde caiu mais de um raio, neste caso, ele desmente o mito, informando: "MITO DESMENTIDO!". Caso contrário, ele não consegue desmentir o mito, informando: "MITO NÃO DESMENTIDO!". Abaixo é apresentada uma matriz contendo os dados registrados para o exemplo de execução a seguir, os números fora da tabela representam as coordenadas dos quadrados (índices de linhas e colunas). Considere que todos os dados fornecidos serão sempre válidos. No exemplo, o mito foi desmentido porque no quadrado [ 2, 2 ] caíram 2 raios. 1 2 3 4 5 6 7 8 1 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 3 1 0 0 0 0 0 1 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 1 0 Exemplo Comprimento da cidade (metros): 5 Largura da cidade (metros): 8 Quantidade de raios:5 Raio 1: [ 2, 2 ] Raio 2: [ 5, 7 ] Raio 3: [ 3, 7 ] Raio 4: [ 2, 2 ] Raio 5: [ 3, 1 ] MITO DESMENTIDO! Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 20 Questão 30. (2018-02) No jogo “Campo Minado” existe uma área representada por uma matriz (campo), de dimensão qualquer, onde o valor 1, armazenado em uma posição (x, y), indica a existência de uma bomba na linha x e coluna y. Já o valor 0, indica a ausência de bomba. Exemplo de um campo minado de dimensão (3 x 10): [ 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1; 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1; 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 ] O jogo começa perguntando o número de jogadores e a quantidade de jogadas. Em cada jogada, cada um dos jogadores deve informar um vetor com duas posições [ x, y ], indicando uma linha e coluna do campo minado. Podem ocorrer 3 situações: 1. a posição [x, y] armazena o valor 0, posição livre. Logo o jogador soma 1 ponto; 2. a posição [x, y] armazena o valor 1, há uma bomba. Logo, o jogador não soma ponto; 3. a posição [x, y] não é uma posição válida da matriz, está fora do campo. Logo o jogador não soma ponto. Ao final de todas as jogadas são impressas as pontuações dos jogadores. Escreva um programa que faça a leitura do campo minado (campo) pelo teclado de uma única vez. O programa cria um vetor ponto, onde cada posição armazena o total de pontos de cada jogador. Inicialmente para o jogador i, tem-se ponto(i) = 0. Quando executado, o programa realiza as impressões conforme o exemplo de execução abaixo. Exemplo Campo: [ 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1; 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1; 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 ] Quantidade de jogadores: 3 Quantidade de jogadas: 4 Jogada 1 Jogador 1 [x, y]: [1 2] Acertou! Jogador 2 [x, y]: [2 3] Acertou! Jogador 3 [x, y]: [3 3] BOMBA! Jogada 2 Jogador 1 [x, y]: [4 2] Fora do Tabuleiro! Jogador 2 [x, y]: [4 4] Fora do Tabuleiro! Jogador 3 [x, y]: [3 20] BOMBA! Jogada 3 Jogador 1 [x, y]: [2 6] BOMBA! Jogador 2 [x, y]: [1 8] ACERTOU ! Jogador 3 [x, y]: [2 12] ACERTOU! Jogada 4 Jogador 1 [x, y]: [1 1] BOMBA! Jogador 2 [x, y]: [2 2] ACERTOU! Jogador 3 [x, y]: [3 3] BOMBA! Pontuação final: Jogador 1: 1 ponto(s) Jogador 2: 3 ponto(s) Jogador 3: 1 ponto(s) Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Biológicas – ICEB Departamento de Computação – DECOM 21 Questão 31. (2018-02) Uma indústria de montagem de equipamentos pesados realiza o planejamento de sua produção com base em uma matriz de demandas semanais de peças e uma matriz de preços de diferentes fornecedores para as peças demandadas. Na matriz de demandas as linhas representam as semanas, as colunas representam as peças, e informação armazenada é a quantidade de peças demandada para as semanas. Na matriz de orçamentos as linhas representam as peças, as colunas representam os fornecedores, e a informação armazenada é o valor cobrado pelos fornecedores para as peças. Veja abaixo duas tabelas que exemplificam o conteúdo de cada uma destas matrizes. Tabela de Demandas Tabela de Orçamentos Peça A Peça B Semana 1 40 30 Semana 2 30 50 Semana 3 60 20 AX BYD CZ Peça A 20 22.35 19.99 Peça B 32.5 28.90 32.35 A partir do produto interno entre as duas matrizes, é possível determinar o custo semanal em relação a cada fornecedor, conforme apresentado a seguir: 40 30 30 50 60 20 . 20 22.35 19.9932.5 28.9 32.35 = 1775 1761 1770.1 2225 2115.5 2217.2 1850 1919 1846.4 Na matriz resultante as linhas representam as semanas e as colunas representam os fornecedores. Implemente um programa que leia um vetor contendo os nomes de cada fornecedor, uma matriz contendo as demandas, outra matriz contendo os orçamentos e escolha um fornecedor para cada semana, imprimindo a semana, o nome do fornecedor e o valor de custo. O fornecedor escolhido será aquele com o menor custo na semana. Não é necessário fazer validação dos dados. A seguir um exemplo de execução do programa para os dados do exemplo anterior. Exemplo Fornecedores:[ "AX" , "BYD" , "CZ" ] Demandas: [ 40 , 30 ; 30 , 50 ; 60 , 20 ] Orçamentos: [ 20 22.35 19.99 ; 32.5 28.9 32.35 ] Semana 1: BYD (R$ 1761.00) Semana 2: BYD (R$ 2115.50) Semana 3: CZ (R$ 1846.40)
Compartilhar