Algoritmo vetores e matrizes Exercícios resolvidos pdf

You're Reading a Free Preview
Pages 5 to 9 are not shown in this preview.

You're Reading a Free Preview
Pages 5 to 7 are not shown in this preview.

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Escreva um programa que leia 10 números inteiros e os armazene em um vetor. Imprima o vetor, o maior elemento e a posição que ele se encontra. 2. Escreva um programa que leia n números inteiros no intervalo [0,50] e os armazene em um vetor estaticamente alocado com 100 posições. Preencha um segundo vetor, também alocado estaticamente, apenas com os números ímpares do primeiro vetor. Imprima os dois vetores, 10 elementos por linha. 3. Leia um vetor de 10 posições. Contar e escrever quantos valores pares ele possui. 4. Leia um vetor de 10 posições e atribua valor 0 para todos os elementos que possuírem valores negativos. 5. Faça um programa para ler a nota da prova de 15 alunos e calcule e imprima a média geral. Obs.: Tente fazer o programa usando funções, usando uma função para ler as notas e outra para calcular a média. 6. Considere um vetor A com 11 elementos onde A1 < A2 < < A6 > A7 > A8 > > A11, ou seja, está ordenado em ordem crescente até o sexto elemento, e a partir desse elemento está ordenado em ordem decrescente. Dado o vetor da questão anterior, proponha um algoritmo para ordenar os elementos. 7. Faça um programa que receba do usuário dois arrays, A e B, com 10 números inteiros cada. Crie um novo array C calculando C = A - B. Mostre na tela os dados do array C. 8. Faça um programa que leia um vetor de 10 posições e verifique se existem valores iguais e os escreva. 9. Faça um programa que leia um vetor de cinco posições para números reais e, depois, um código inteiro. Se o código for zero, finalize o programa; se for 1, mostre o vetor na ordem direta; se for 2, mostre o vetor na ordem inversa. Caso, o código for diferente de 1 e 2 escreva uma mensagem falando que o código é inválido. 10. Ler uma sequência de n o s. reais e determinar o maior elemento desta sequência. A sequência termina quando for digitado o no. Zero. 11. Leia 10 números inteiros e armazene em um vetor. Em seguida escreva os elementos que são primos e suas respectivas posições no vetor. 12. Leia 10 números inteiros e armazene em um vetor v. Crie dois novos vetores v1 e v2. Copie os valores ímpares de v para v1, e os valores pares de v para v2. Note que cada um dos vetores v1 e v2 têm no máximo 10 elementos, mas nem todos os elementos são utilizados. No final escreva os elementos UTILIZADOS de v1 e v2. 1

13. Leia dois vetores de inteiros X e Y, cada um com 5 elementos (assuma que o usuário não informa elementos repetidos). Calcule e mostre os vetores resultantes em cada caso abaixo: Soma entre X e Y: soma de cada elemento de X com o elemento da mesma posição em Y. Produto entre X e Y: multiplicação de cada elemento de X com o elemento da mesma posição em Y. Diferença entre X e Y: todos os elementos de X que não existam em Y. Interseção entre X e Y: apenas os elementos que aparecem nos dois vetores. União entre X e Y: todos os elementos de X, e todos os elementos de Y que não estão em X. 14. Leia um vetor com 10 números de ponto flutuante, ordene os elementos deste vetor, e no final escreva os elementos do vetor ordenado. 15. Leia um vetor com 20 números inteiros. Escreva os elementos do vetor eliminando elementos repetidos. 16. Faça um programa para ler 10 números DIFERENTES a serem armazenados em um vetor. Os dados deverão ser armazenados no vetor na ordem que forem sendo lidos, sendo que caso o usuário digite um número que já foi digitado anteriormente, o programa deverá pedir para ele digitar outro número. Note que cada valor digitado pelo usuário deve ser pesquisado no vetor, verificando se ele existe entre os números que já foram fornecidos. Exibir na tela o vetor final que foi digitado. 17. Peça ao usuário para digitar dez valores numéricos e ordene por ordem crescente estes valores, guardando-os num vetor. Ordene o valor assim que ele for digitado. Mostre ao final os valores em ordem. 18. Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em metros. Encontre o aluno mais baixo e o mais alto. Mostre o número do aluno mais baixo e do mais alto, juntamente com suas alturas. 19. Ler dois conjuntos de números reais, armazenando-os em vetores e calcular o produto escalar entre eles. Os conjuntos têm no máximo 20 elementos. Imprimir os dois conjuntos e o produto escalar, sendo que o produto escalar é dado por: x 1 y 1 + x 2 y 2 +... + x n y n. 20. Ler uma sequência de números inteiros (com nos. positivos e negativos) do teclado, sequência esta que termina com o número zero e armazene num vetor. Escrever o no. de elementos positivos e o no. de elementos negativos presentes na sequência. 21. Ler um conjunto de números reais, armazenando-o em vetor e calcular o quadrado das componentes deste vetor, armazenando o resultado em outro vetor. Os conjuntos têm no máximo 20 elementos. Imprimir todos os conjuntos. 22. Faça um programa que leia um número n e: Crie e leia um vetor de inteiro de n posições; Conte os múltiplos de um número inteiro x num vetor e mostre-os na tela. Na sua função main(), mostre quantos múltiplos foram encontrados. 2

23. Faça um programa que leia dois números a e b (positivos menores que 10000) e: Crie um vetor onde cada posição é um algarismo do número. A primeira posição é o algarismo menos significativo; Crie um vetor que seja a soma de a e b, mas faça-o usando apenas os vetores construídos anteriormente. Dica: some as posições correspondentes. Se a soma ultrapassar 10, subtraia 10 do resultado e some 1 à próxima posição. 24. Faça um programa que leia dois números n e m e: Crie e leia um vetor de inteiros de n posições; Crie e leia um vetor de inteiros de m posições; Crie e construa um vetor de inteiros que seja a interseção entre os dois vetores anteriores, ou seja, que contém apenas os números que estão em ambos os vetores. Não deve conter números repetidos. Na sua função main(), imprima os três vetores criados. 25. Faça um programa que leia dois números n e m e: Crie e leia um vetor de inteiros de n posições; Crie e leia um vetor de inteiros de m posições; Crie e construa um vetor de inteiros que seja a união entre os dois vetores anteriores, ou seja, que contém os elementos dos dois vetores (inclusive repetidos). Na sua função main(), imprima os três vetores criados. 26. Faça um programa que possua um array de nome A que armazene 6 números inteiros. O programa deve executar os seguintes passos: (a) Atribua os seguintes valores a este array: 1, 0, 5, -2, -5, 7. (b) Armazene em uma variável inteira (simples) a soma entre os valores das posições A[0], A[1] e A[5] do array e mostre na tela esta soma. (c) Modifique o array na posição 4, atribuindo a esta posição o valor 100. (d) Mostre na tela cada valor do array A, um em cada linha. 27. Faça um programa que leia um vetor de 8 posições e em seguida leia também dois valores X e Y quaisquer correspondentes a duas posições no vetor. Ao final seu programa deverá escrever a soma dos valores encontrados nas respectivas posições X e Y. 28. Crie um programa que lê 6 valores inteiros e em seguida mostra na tela os valores lidos 29. Faça um programa que receba do usuário um vetor x com 10 posições. Em seguida deverá ser impresso o maior e o menor elemento do vetor. 30. Faça um programa que leia dois vetores de 10 posições e calcule outro vetor contendo, nas posições pares os valores do primeiro e nas posições impares os valores do segundo. 31. Faça um programa que leia um vetor de 10 posições e verifique se existem valores iguais e os escreva. 3

32. Faça um programa que leia um vetor de 15 posições e o compacte, ou seja, elimine as posições com valor zero. Para isso, todos os elementos à frente do valor zero, devem ser movidos uma posição para trás no vetor. 33. Faça um programa que preencha um primeiro vetor com dez números inteiros e um segundo vetor com cinco números inteiros. O programa deverá mostrar uma lista dos números do primeiro vetor com seus respectivos divisores armazenados no segundo vetor, bem como suas posições. 34. Faça um programa que receba seis números inteiros e mostre: Os números pares digitados; A soma dos números pares digitados; Os números ímpares digitados; A quantidade de números ímpares digitados; 35. Faça um programa que leia um vetor de cinco posições para números reais e, depois, um código inteiro. Se o código for zero, finalize o programa; se for 1, mostre o vetor na ordem direta; se for 2, mostre o vetor na ordem inversa. Caso, o código for diferente de 1 e 2 escreva uma mensagem falando que o código é inválido. 36. Faça um programa que preencha um vetor com dez números reais, calcule e mostre a quantidade de números negativos e a soma dos números positivos desse vetor. 37. Faça um programa que receba o nome de oito clientes e armazene-os em um vetor. Em um segundo vetor, armazene a quantidade de DVDs locados em 2009 por cada um dos clientes. Sabe-se que, para cada dez locações, o cliente tem direito a uma locação grátis. Faça um programa que mostre o nome de todos os clientes, com a quantidade de locações grátis a que ele tem direito. 38. Faça um programa que preencha três vetores com dez posições cada um: o primeiro vetor, com os nomes de dez produtos; o segundo vetor, com os códigos dos dez produtos; e o terceiro vetor; com os preços dos produtos. Mostre um relatório apenas com o nome, o código, o preço e o novo preço dos produtos que sofrerão aumento. Sabe-se que os produtos que sofrerão aumento são aqueles que possuem código par ou preço superior a R$ 1.000,00. Sabe-se ainda que, para os produtos que satisfizerem às duas condições anteriores, código e preço, o aumento será de 20%; para aqueles que satisfazerem apenas à condição de código, o aumento será de 15%; e aqueles que satisfazerem apenas a condição de preço, o aumento será de 10 39. Faça um vetor de tamanho 50 preenchido com o seguinte valor: (i+5i)%i, sendo i a posição do elemento no vetor, em seguida imprima o vetor na tela. 40. Faça um programa que preencha um vetor de tamanho 100 com os 100 primeiros naturais que não são múltiplos de 7 ou que terminam com 7. 4

41. Faça um programa que calcule o desvio padrão de um vetor v contendo n números, onde m é a media do vetor. Desvio Padr~ao = 1 n (v[i] m) n 1 2 42. Crie um programa que lê 6 valores inteiros e em seguida mostra na tela os valores lidos na ordem inversa 43. Crie um programa que lê 6 valores inteiros pares e em seguida mostra na tela os valores lidos na ordem inversa 44. Fazer um programa para ler 5 valores, e, em seguida, mostrar todos os valores lidos juntamente com o maior, o menor e a média dos valores. 45. Fazer um programa para ler 5 valores, e, em seguida, mostrar a posição onde se encontram o maior e o menor valor. i=0 2 Matrizes 1. Leia uma matriz 4x4, imprima a matriz e retorne a localização (linha e a coluna) do maior valor. 2. Declare uma matriz 5 x 5. Preencha com 1 a diagonal principal e com 0 os demais elementos. Escreva ao final a matriz obtida. 3. Leia duas matrizes 4 x 4 e escreva uma terceira com os maiores elementos entre as primeiras. 4. Leia uma matriz 4 x 4, conte e escreva quantos valores maiores que 10 ela possui. 5. Faça um programa que preenche uma matriz com o produto do valor da linha e da coluna de cada elemento, depois imprime na tela. 6. Gere matriz 4x 4 com valores no intervalo [1,20]. Escreva um programa que transforme a matriz gerada numa matriz triangular inferior, ou seja, atribuindo zero a todos os elementos acima da diagonal principal. Imprimir a matriz original e a matriz transformada. 7. Leia uma matriz 5 x 5. Leia também um valor X. O programa deverá fazer uma busca desse valor na matriz e, ao final escrever a localização (linha e coluna) ou uma mensagem de não encontrado. 8. Leia uma matriz 5 x 10 que se refere respostas de 10 questões de múltipla escolha, referentes a 5 alunos. Leia também um vetor de 10 posições contendo o gabarito de respostas que podem ser a, b, c ou d. Seu programa deverá comparar as respostas de cada candidato com o gabarito e emitir um vetor Resultado, contendo a pontuação correspondente a cada aluno. 9. Faça um programa que leia uma matriz A 5x5 e calcule B = A 2. 10. Crie uma função para somar duas matrizes. Esta função deve receber duas matrizes e retornar a soma em uma terceira matriz. Caso o tamanho da primeira e segunda matriz seja diferente a função retornará um erro. Caso a função seja concluída com sucesso a mesma deve retornar o valor zero (0). Utilize aritmética de ponteiros para manipulação das matrizes. Mostre o uso dessa função em um programa feito em C. 5

11. Os incas ficaram conhecidos pela grande civilização que reinou na região dos Andes durante vários séculos. O que pouca gente sabe é que os incas construíram pirâmides de base quadrada em que a única forma de se atingir o topo era seguir em espiral pela borda, que acabava formando uma escada em espiral. Estas pirâmides ainda se encontram escondidas na floresta amazônica e sua descoberta trará uma aplicação para este exercício. Neste problema você deverá fazer um programa para verificar se uma matriz é inca. Seu programa deve ter uma função que recebe como parâmetro, uma matriz quadrada A(n x n) de números inteiros para verificar se a matriz é inca, ou seja, se partindo do canto superior esquerdo da matriz, no sentido horário, em espiral, a posição seguinte na ordem é o inteiro consecutivo da posição anterior. Caso a matriz seja inca deve retornar 1 (um) senão 0 (zero). Exemplo de uma matriz inca: 10 9 8 7 11 16 15 6 12 13 14 5 1 2 3 4 12. Faça um programa que permita ao usuário entrar com uma matriz de 3x3 números inteiros. Em seguida, utilize uma função para gerar um array unidimensional pela soma dos números de cada coluna da matriz e mostrar na tela esse array. Por exemplo, a matriz: 5-8 10 1 2 15 25 10 7 Vai gerar um vetor, onde cada posição é a soma das colunas da matriz. posição será 5 + 1 + 25, e assim por diante: A primeira 31 4 3 13. Faça um programa que leia uma matriz, de 5 linhas e 4 colunas, contém as seguintes informações sobre alunos de uma disciplina, sendo todas as informações do tipo inteiro: Primeira coluna: número de matrícula (use um inteiro) Segunda coluna: média das provas Terceira coluna: média dos trabalhos Quarta coluna: nota final Elabore um programa que: (a) Leia as três primeiras informações de cada aluno (b) Calcule a nota final como sendo a soma da média das provas e da média dos trabalhos (c) Imprima a matrícula do aluno que obteve a maior nota final (assuma que só existe uma maior nota) (d) Imprima a média aritmética das notas finais 6

14. Leia uma matriz 10 x 3 com as notas de 10 alunos em 3 provas. Em seguida, escreva o número de alunos cuja pior nota foi na prova 1, o número de alunos cuja pior nota foi na prova 2, e o número de alunos cuja pior nota foi na prova 3. Em caso de empate das piores notas de um aluno, o critério de desempate é arbitrário, mas o aluno deve ser contabilizado apenas uma vez. 15. Faça um programa para corrigir uma prova com 10 questões de múltipla escolha (a, b, c, d ou e), em uma turma com 3 alunos. Cada questão vale 1 ponto. Leia o gabarito, e para cada aluno leia sua matricula (número inteiro) e suas respostas. Calcule e escreva: Para cada aluno, escreva sua matrícula, suas respostas, e sua nota. O percentual de aprovação, assumindo média 7.0. 16. Escrever uma função (e um programa em C que utiliza tal função) que determine se uma matriz quadrada de n > 0 linhas e colunas e uma matriz permutação. Uma matriz quadrada e chamada de matriz permutação se seus elementos são apenas 0 s e 1 s e se em cada linha e coluna da matriz existe apenas um único valor 1. Exemplo: A matriz a seguir e uma matriz permutação. 1 0 0 0 0 1 0 1 0 17. Na teoria dos sistemas, define-se como elemento minimax de uma matriz o menor elemento de uma linha onde se encontra o maior elemento da matriz. Faca uma função que recebe, por parâmetro, uma matriz A(10,10) e retorna o seu elemento minimax, juntamente com a sua posição. 18. Faça um programa para gerar automaticamente números, entre 0 e 99, de uma cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas de 5 números, gere estes dados de modo a não ter números repetidos dentro das cartelas! Lembre-se que é importante armazenar os números sorteados em uma tabela com 5 linhas e 5 colunas, pois no sorteio do bingo vale pontos quem completar primeiro uma linha ou uma coluna. O programa deve gerar a cartela e depois exibir na tela a cartela gerada, linha a linha, coluna por coluna. 19. Na matriz de 20x20 abaixo, quatro números ao longo de uma linha diagonal foram marcadas em negrito. O produto desses números é 26 * 63* 78 * 14 = 1788696. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 7

88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 Qual é o maior produto de quatro números adjacentes em qualquer direção (cima, baixo, esquerda, direita, ou na diagonal) na matriz de 20x20? 20. Faça um programa que: Leia dois inteiros n e m, crie e leia uma estrutura de dados que é uma matriz de inteiros positivos, contendo suas dimensões n e m bem como seus elementos. Leia um inteiro x e procure na matriz, mostrando na tela a linha e a coluna em que está. Repita esse processo até ler um número menor que zero. 21. Faça um programa que leia quatro números a, b, c e d, que serão as dimensões de duas matrizes, e: Crie e leia uma matriz, dadas as dimensões dela; Crie e construa uma matriz que seja o produto de duas matrizes. Na sua função main(), imprima as duas matrizes e o produto entre elas, se existir. 22. Faça um programa que leia duas matrizes 3x3 com valores reais. Ofereça ao usuário um menu de opções: somar as duas matrizes, subtrair as 2 matrizes, adicionar uma constante às duas matrizes, imprimir as matrizes. Nas duas primeiras opções uma terceira matriz 3x3 deve ser criada. Na terceira opção o valor da constante deve ser lido e o resultado da adição da constante deve ser armazenado na própria matriz. 23. Faça programa que leia uma matriz 3x6 com valores reais. (a) Imprima a soma de todos os elementos das colunas ímpares. (b) Imprima a média aritmética dos elementos da segunda e quarta colunas. (c) Substitua os valores da sexta coluna pela soma dos valores das colunas 1 e 2. (d) Imprima a matriz modificada. 24. Faça um programa para determinar a próxima jogada em um Jogo da Velha. Assumir que o tabuleiro é representado por uma matriz de 3x3, onde cada variável representa uma das casas do tabuleiro. A matriz pode conter os seguintes valores -1, 0, 1 representando respectivamente uma casa contendo uma peça minha (-1), uma casa vazia do tabuleiro (0), e uma casa contendo uma peça do meu oponente (1). Exemplo: -1 1 1-1 -1 0 0 1 0 25. Gerar e imprimir uma matriz de tamanho 10x10, onde seus elementos são da forma: A[i][j] = 2*i + 7*j 2 se i < j; A[i][j] = 3*i^2 1 se i = j ; A[i][j] = 4*i^3 5*j^2 + 1 se i > j. 8

26. Calcular a soma dos elementos de uma matriz numérica quadrada qualquer dada, que estão acima da diagonal principal. 27. Calcular a soma dos elementos de uma matriz numérica quadrada qualquer dada, que estão abaixo da diagonal principal. 28. Obtenha e imprima um vetor que seja a soma dos elementos de cada coluna de uma matriz numérica qualquer dada. 9