Lista de Exercícios Vetores LINGUAGEM DE PROGRAMAÇÃO PROF. EDUARDO SILVESTRI. WWW.EDUARDOSILVESTRI.COM.BR ATUALIZADO EM: 29/10/2007 Página 1/9 1. Faça um programa que crie um vetor de inteiros de 50 posições leia os valores via teclado e os imprima na tela. 2. Faça um programa que crie um vetor de inteiros de 20 posições leia os valores e os imprima na sua ordem inversa. 3. Faça um programa que crie um vetor de inteiros de 10 posições leia os valores e imprima somente os valores do vetor que forem impares. 4. Faça um programa que crie um vetor de inteiros de 10 posições leia os valores e imprima os valores onde o índice for impar. 5. Faça um programa que leia pelo teclado um vetor numérico inteiro de tamanho 15, mostrando os elementos do vetor que estão em índice ímpar e os elementos do vetor que são ímpares. 6. Faça um programa em que armazene a temperatura (em Celsius) de 7 dias consecutivos e que as mostre na tela identificando a temperatura com o dia da semana em que ocorreu. 7. Dado dois vetores A e B contendo 20 elementos inteiros cada, gerar e exibir um vetor C do mesmo tamanho cujos elementos sejam a soma dos respectivos elementos de A e B. Exemplo: 8. Dado um vetor A contendo 100 elementos inteiros, gerar e exibir um vetor B cujos elementos estão na ordem inversa de A. Exemplo: 9. Dado dois vetores A e B contendo 25 elementos inteiros cada, gerar e exibir um vetor C de 50 elementos, cujos elementos sejam a intercalação dos elementos de A e B. Exemplo: 10. Um time de basquete possui 12 jogadores. Deseja-se um programa que, dado o nome e a altura dos jogadores, determine: a) o nome e a altura do jogador mais alto; b) a média de altura do time; c) a quantidade de jogadores com altura superior a média, listando o nome e a altura de cada um. 11. Fazer um programa em C para corrigir provas de múltipla escolha. Cada prova tem 10 questões e cada questão vale 1 ponto. O primeiro conjunto de dados a ser lido será o gabarito para a correção da Página 2/9 prova. Os outros dados serão os números dos alunos e suas respectivas respostas, e o último número, do aluno fictício, será 0 (zero). O programa deverá calcular e imprimir: a) para cada aluno, o seu número e sua nota; b) o percentual de aprovação, sabendo-se que a nota mínima de aprovação é 6. c) a nota que teve maior freqüência absoluta, ou seja, a nota que apareceu maior número de vezes (supondo a inexistência de empates). A estrutura de dados para este programa de ser a seguinte: 12. Um conjunto de 10 dados numéricos inteiros contidos no vetor ENTRADA precisa ser criptografado no vetor SAIDA antes de ser transmitido. A regra de criptografia que transforma cada elemento i do vetor de ENTRADA no elemento i do vetor de SAIDA é dada a seguir: • Caso o elemento esteja numa posição par do vetor , devemos fazer a seguinte conta: SAIDA[i] = 2*ENTRADA[i] -1 • Caso o elemento esteja numa posição ímpar do vetor, devemos fazer a seguinte conta: SAIDA[i] = ENTRADA[i] + 3 Após as operações descritas acima, mostre, respectivamente, os vetores ENTRADA e SAIDA em linhas distintas. 13. Uma operação comum na área digital é a operação de divisão inteira de um número inteiro por 2. Iremos simular estas operações a partir do uso de vetores. Usaremos um vetor chamado NUMERO_IN de comprimento 8 para armazenar o número de entrada. Este vetor deve armazenar a representação binária de um determinado número. Inicialmente você deve entrar com 0´s ou 1´s para cada posição de memória deste vetor. (Vamos supor que o dado de entrada seja positivo). A partir de então você deve executar a operação de divisão binária e armazenar o resultado no vetor NUMERO_OUT. A mesma é descrita a seguir: • Para todas as posições i, de 0 até 6, do vetor NUMERO_IN devemos copiar o conteúdo na posição (i+1) do vetor NUMERO_OUT. • A posição 0 do vetor NUMERO_OUT deve ser zero. Faça um programa em que leia um número armazenado bit a bit em 8 posições consecutivas de memória, calcule a sua divisão binária e imprima o número de entrada nos formatos decimal e binário e o número de saída nos formatos decimal e binário. 14. Faça um programa em que leia dois vetores distintos, de 13 posições cada, explicados a seguir: • Resultado: Este vetor armazena, em cada posição, os resultados de cada um dos 13 jogos da loteria esportiva. Assim, o primeiro jogo está na posição 0 até o jogo 13 que está na posição 12 deste vetor. • Para cada um dos 13 jogos, são possíveis um dentre três resultados. 0 se houve empate, 1 se o vencedor for o time 1 da coluna do volante de jogo e 2 se o vencedor for o time 2 da coluna do volante. • Jogador: Este vetor armazena os palpites para cada um dos 13 jogos de um dado jogador. Após ler cada um dos vetores, o programa deve dizer quantos pontos o Jogador fez na loteria esportiva. 15. Uma loja faz uso de 4 vetores para saber seu faturamento diário. Os mesmos são descritos a seguir: • Estoque_i: Este vetor armazena os valores dos estoques iniciais de cada um dentre 5 produtos. Assim Estoque_i[i] corresponde ao estoque inicial do produto i. Página 3/9 • Estoque_f: Este vetor armazena os valores dos estoques finais de cada um dentre 5 produtos, numerados de 0 até 4. Assim Estoque_f[i] corresponde ao estoque final do produto i. • Valor_c: Este vetor armazena os valores dos custos unitários de cada um dentre 5 produtos, numerados de 0 até 4. Assim Valor_c[i] corresponde ao custo unitário do produto i. • Valor_v: Este vetor armazena os valores dos preços unitários de venda para cada um dentre 5 produtos, numerados de 0 até 4. Assim Valor_v[i] corresponde ao preço unitário de venda para produto i. Faça um programa em que leia cada um dos 4 vetores acima, calcule e mostre o total faturado pela loja para o dia em que são válidos os dados digitados. 16. Faça um programa que leia pelo teclado um vetor inteiro, de tamanho 10, e informe quantas TRIPLAS de números seguidos estão no conjunto dos dados teclados. 17. Dizemos que um vetor de dimensão tamanho 10 é: • Ordenado estritamente crescentemente se e somente se o conteúdo de uma posição de memória vale menos que o conteúdo de memória imediatamente seguinte; • Ordenado estritamente decrescentemente se e somente se o conteúdo de uma posição de memória vale mais que o conteúdo de memória imediatamente seguinte; Faça um programa que após permitir o preenchimento de um vetor, informe se o mesmo é Ordenado estritamente crescentemente, decrescentemente ou nenhum dos dois casos. 18. Dizemos que um vetor numérico é dito vetor palíndromo se e somente se o conteúdo do mesmo, lido da esquerda para a direita, é o mesmo que o conteúdo do mesmo lido da direita para a esquerda. Faça um programa em que leia um vetor de tamanho 10, calcule e informe se este vetor é palíndromo. 19. Faça um programa que leia pelo teclado um vetor numérico real, de tamanho 12, calcule e exiba o valor de R onde R = (V[11]*V[0]) + (V[10]*V[1]) + (V[9]*V[2]) +...+ (V[1]*V[10]) + (V[0]*V[11]). 20. Faça um programa que leia um vetor IN de dimensão 10 e que gere um vetor OUT de dimensão 10 que seja o inverso do vetor IN. Mostre na tela ambos os vetores. 21. Suponha que devam se guardadas duas informações de cada pessoa de um grupo de 8 pessoas, idade e sexo. Para tanto vamos usar dois vetores, idade e sexo. Assim: • IDADE: IDADE[i] corresponde à idade da i-ésima pessoa cujos dados estão armazenados no vetor IDADE. • SEXO: SEXO[i] corresponde ao sexo da i-ésima pessoa cujos dados estão sendo armazenados no vetor SEXO. Utilize a seguinte codificação: -1 = homem e 1 = mulher. Faça um programa que leia as informações de um conjunto de 8 pessoas, calcule e imprima: • Quantidade de homens no grupo • Percentual de mulheres com idade igual ou inferior a 18 anos; • Idade média do grupo. 22. Faça um programa que leia a nota de cada um dentre os 10 alunos de uma sala especial e preencha cada um dos 2 vetores descritos abaixo conforme os dados estejam sendo digitados: • APROVADOS: este vetor possui somente notas de alunos aprovados. Um aluno é dito aprovado se e somente se sua nota for maior ou igual a 6.0 • REPROVADOS: este vetor possui somente notas de alunos reprovados. Um aluno é dito reprovado se e somente se sua nota for inferior a 6.0 Após o preenchimento dos vetores acima descritos informe: • o vetor de aprovados e a quantidade de aprovados; • o vetor de reprovados e a quantidade de reprovados. 23. Uma das medidas de dispersão mais comumente usadas em estatística é a variância. Esta medida verifica quão espalhados um conjunto de dados está em relação à média aritmética destes mesmos Página 4/9 dados. Faça um programa que leia um conjunto de 10 dados numéricos, calcule e imprima a média e variância. 9 9 ∑ X[i] A fórmula da média aritmética é: µ= i=0 10 e da variância é: δ 2 ∑ (X[i] - µ ) = 2 i =0 10 . 24. Uma corrida de automóveis possui 10 participantes numerados de 0 até 9. Faça um programa que leia o tempo de uma volta, em segundos, para cada um destes 10 participantes calcule e imprima as respostas para as perguntas a seguir: • Qual o tempo e o número do carro mais rápido; • Qual o tempo e o número do carro mais lento; • Qual o tempo médio dos participantes da corrida; • Quantos participantes possuem tempo menor que o tempo médio. 25. Uma empresa de cinema armazena, semanalmente, o número de ingressos vendidos para cada uma das 3 salas que possui. Para tanto utiliza 3 vetores distintos. Cada vetor armazena a quantidade de ingressos vendidos na respectiva sala em cada um dos dias da semana: • Sala1:vetor de 7 posições que armazena em cada posição o valor dos ingressos vendidos em um determinado dia para a sala 1; • Sala2: vetor de 7 posições que armazena em cada posição o valor dos ingressos vendidos em um determinado dia para a sala 2; • Sala3: vetor de 7 posições que armazena em cada posição o valor dos ingressos vendidos em um determinado dia para a sala 3. Faça um programa em que leia os 3 vetores descritos acima, calcule e mostre as seguintes informações (supondo que não haja empates): • Quantos ingressos foram vendidos em dada semana para cada uma das 3 salas; • Qual foi a sala que vendeu mais ingressos e em que dia isto ocorreu; • Qual foi a sala que vendeu menos ingressos e em que dia isto ocorreu. 26. Faça um programa que preencha um vetor DADOS de tamanho 10 apenas com números positivos. O usuário pode digitar número aleatoriamente, mas o vetor somente deve armazenar os números positivos, isto é, devem ser descartados os números negativos digitados. Após o preenchimento do último elemento do vetor DADOS, o mesmo deve ser mostrado na tela. Deve ser impresso também a quantidade de valores digitados até que se tenha preenchido totalmente o vetor DADOS. 27. Faça um programa que leia um vetor de dimensão 10 e um número chamado inúmero. O programa deve procurar inumero no vetor. Caso: • o mesmo seja achado no vetor, indique em que posição ocorreu o primeiro inumero achado no vetor; • o mesmo não seja achado no vetor, dê uma mensagem conveniente. 28. Faça um programa em que leia um vetor de tamanho 10 e ordene crescentemente o mesmo. 29. Faça um programa que recebe um vetor de inteiros de 10 posições e retorna um vetor "compactado", isto é, sem valores repetidos. 30. Uma tarefa comum em banco de dados é inserção de elemento numa posição. Suponha que utilizaremos um vetor para simularmos esta tarefa usual em bancos de dados. Dado o vetor que representa o banco de dados, o usuário deve dizer o dado que deseja inserir e em que posição o dado deve ser colocado. Ao fornecer a posição em que deseja colocar o dado, uma dentre 3 possibilidades pode ocorrer: • Vetor cheio: O dado não pode ser inserido em nenhuma posição sem que haja perda de informação; Página 5/9 • Dado não contínuo no vetor: o dado não pode ser inserido pois o usuário deseja inserir a informação numa posição ainda não válida. Caso o vetor não esteja cheio e, simultaneamente, não se peça que o dado, a operação de inserção deve ser feita da seguinte maneira: • Todos os dados à direita da posição onde se deseja inserir o dado, contando a própria posição onde se deseja inserir o dado, devem ser deslocados de uma posição para a direita • O dado então pode ser colocado na posição desejada Para simular a operação de inserção, vamos supor que nosso banco de dados seja constituído de um vetor de números double DADOS, de tamanho 10. Você deve fazer um programa em que o usuário digita 1 <= N <= 10 e N dados e a seguir o usuário digita em que posição deseja inserir um dado e o valor do mesmo. A partir das regras acima: • Caso seja possível inserir um dado no vetor, o programa deve mostrar o conteúdo vetor DADOS antes e depois da inserção do dado • Caso não seja possível inserir dados porque o vetor DADOS está cheio, imprima o vetor DADOS e a mensagem “vetor cheio” • Caso não seja possível inserir dados porque o usuário escolheu posição inválida de inserção, imprima o vetor DADOS e a mensagem “dado não contínuo no vetor” 31. Uma tarefa comum em banco de dados é exclusão de elemento numa posição. Suponha que utilizaremos um vetor para simularmos esta tarefa usual em bancos de dados. Dado o vetor que representa o banco de dados, o usuário deve dizer a posição do dado a ser excluído. Ao fornecer a posição em que deseja colocar o dado, uma dentre 2 possibilidades pode ocorrer: • Dado não contínuo no vetor: o dado não pode ser excluído pois o usuário escolheu uma posição não válida do vetor. Não é posição válida de dado no vetor; • O dado está numa posição válida para exclusão: a operação de exclusão deve ser feita da seguinte maneira: Todos os dados à direita da posição onde se deseja excluir o dado, contando a própria posição onde se deseja inserir o dado, devem ser deslocados de uma posição para a esquerda Para simular a operação de exclusão, vamos supor que nosso banco de dados seja constituído de um vetor de números double DADOS, de tamanho 10. Você deve fazer um programa em que o usuário digita 1 <= N <= 10 e N dados e a seguir o usuário digita a posição que deseja excluir. A partir das regras acima: • Caso seja possível excluir um dado no vetor, o programa deve mostrar o conteúdo vetor DADOS antes e depois da exclusão do dado; • Caso não seja possível inserir dados porque o usuário escolheu posição inválida de inserção, imprima o vetor DADOS e a mensagem “dado não contínuo no vetor” . 32. Faça um programa que dado o vetor unidimensional [2; 4; 35; 50; 23; 17; 9; 12; 27; 5] retorne: • maior valor • média dos valores • os valores dispostos em ordem crescente • sub conjunto de valores primos que está contido no vetor 33. Faça um programa que: a. leia 7 valores inteiros e os armazene em um vetor. Listar o vetor com as referidas posições de armazenamento de cada valor. Página 6/9 b. ofereça uma função de pesquisa onde dado um valor inteiro qualquer de entrada retornar a posição deste valor dentro do vetor, e caso este valor não esteja presente no vetor retornar –1. c. ofereça uma função que troque os valores contido no vetor pela seguinte política: cada elemento i dentro do vetor será substituído pela soma de todos os (i-1) elementos mais o elemento i. Por exemplo, dado um vetor [1; 2; 3; 4; 5] após a aplicação da função teríamos esse vetor preenchido com os seguintes valores [1; 3; 6; 10; 15]. Para esta tarefa utilize um vetor auxiliar. 34. Faça um programa que, dados dois vetores bidimensionais (matrizes A e B) com dimensões de no máximo 5x5 elementos, retorne: • a soma destas duas matrizes • a soma das diagonais de cada matriz • a multiplicação das duas matrizes 35. Faça um programa para: • receber as dimensões M e N da matriz A (M e N <= 5) • receber os MxN elementos da matriz A • receber as dimensões J e K da matriz B (J e K <=5, J = N) • receber os JxK elementos da matriz B • calcular e mostrar a matriz C, de dimensões MxK, que é o produto das matrizes A e B. 36. Faça um programa para receber do usuário a dimensão de um vetor (máx. 20), os elementos desse vetor e efetuar a sua ordenação utilizando o método da bolha (bubble-sort). 37. Vamos supor que várias pedras do jogo de xadrez estão no tabuleiro. Para facilitar a indicação das peças, vamos convencionar: 1 – peões 3 – torres 5 – reis 0 – ausência de peças 2 – cavalos 4 – bispos 6 – rainhas O tabuleiro é o seguinte: 1 3 0 5 4 0 2 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 6 0 1 0 0 1 1 0 0 1 0 1 0 4 0 0 1 0 0 0 3 1 0 0 1 1 1 0 6 6 0 0 1 0 1 0 5 0 1 1 0 6 a) Construa um programa que determine a soma total entre peões ou bispos e a quantidade de posições com ausência de peças; b) Escreva outro programa que determine qual a quantidade de cada tipo de peça no tabuleiro. Página 7/9 38. A distância entre várias cidades é dada pela tabela abaixo (em km): 1 2 3 4 5 1 00 15 30 05 12 2 15 00 10 17 28 3 30 10 00 03 11 4 05 17 03 00 80 5 12 28 11 80 00 a) Construa um programa que leia a tabela acima e informe ao usuário a distância entre duas cidades por ele requisitadas, até que ele entre com o código 0 para ambas as cidades; b) Elabore um programa que imprima a tabela sem repetições, isto é, se a distância entre as cidades 1 e 3 foi emitida, não é necessário emitir a distância entre 3 e 1; c) Dado um determinado percurso, imprima o total percorrido: Exemplo: dado o percurso 1, 2, 3, 2, 5, 1, 4, teremos: 15 + 10 + 10 + 28 + 12 + 5 = 80 km. 39. Um cinema que possui capacidade de 20 lugares está sempre lotado. Certo dia cada espectador respondeu a um questionário, onde constava: - sua idade; - sua opinião em relação ao filme, que podia ser: ótimo, bom, regular, ruim ou péssimo. Elabore um programa que, recebendo estes dados calcule e mostre: a. a quantidade de respostas ótimo; b. a diferença percentual entre respostas bom e regular; c. a média de idade das pessoas que responderam ruim; d. a porcentagem de respostas péssimo e a maior idade que utilizou esta opção; e. a diferença de idade entre a maior idade que respondeu ótimo e a maior idade que respondeu ruim. 40. Faça um programa que receba uma matriz 5x5 valores do tipo int do usuário, um valor de cada vez, e imprima a sua matriz transposta (Obs: a matriz transposta é obtida permutando-se as linhas e as colunas de uma matriz. 41. Escreva um programa que leia uma matriz n x m do usuário e a transforme em um vetor unidimensional de n.m posições 42. Fazer um programa para: a. receber 3 notas parciais do aluno em um vetor e a nota do exame em uma variável separada (1 se o aluno não fez exame). b. chamar a função SITUACAO, com as seguintes características: Página 8/9 • Parâmetros: vetor de notas parciais e nota do exame • Retorno: 0 se o aluno está reprovado direto, 1 se o aluno está reprovado em exame, 2 se o aluno está aprovado em exame e 3 se ele está aprovado direto. Página 9/9