1 Disciplina: LPG-I Prof. Flavio Marcello Strelow LISTA 3: Exercícios sobre Vetores 1- O que será impresso pelos programas abaixo? a) void main (void) { char a[8] = { 'p', 'e', 'i', 'i', 'm', 'r', 'a', 'r'}; int b[8] = { 5, 3, 4, 7, 1, 2, -1, 6}; int i=0; while (i >= 0) { printf(" %c ",a[i]); i = b[i]; } } b) void main () { int v[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i, mi = 0, ma = 9; while ( mi != ma - 1 ) { i = (mi + ma) / 2; mi = i; printf("%d - ", v[mi]); } } c) void main () { int v[10 ], i; for (i= 0; i < 10; i++) { v[i] = i; v[i] = v[10 -i ]; } for (i= 0; i < 10; i++) printf("%d ", v[i]); } d) void main () { int v[10 ], i; for (i= 0; i < 10; i++) v[i] = (i+1)*10; i = 0; while (i < 10) { v[i] = v[i]/v[0]; printf("%d ", v[i]); i+=1; } for (i= 0; i < 10; i++) printf("%d ", v[i]); }// end 2- Faça um programa que leia N elementos de um vetor e um valor de código. Se o código for 1, mostrar o vetor na ordem direta, se o código for 2, mostrar o vetor na ordem inversa. 3- Escreva um programa que leia e mostre um vetor de 20 elementos inteiros. A seguir, conte quantos valores pares existem no vetor. 4- Escreva um programa que leia um vetor de 50 posições de números inteiros e mostre somente os positivos. 5- Ler N elementos de um vetor A e um valor x. Criar o vetor B contendo os elementos do vetor A multiplicados por x. 6- Criar um programa que defina um vetor de 500 posições e calcular a soma dos conteúdos impares. 2 7- Escreva um programa que leia 200 valores , crie um vetor com tais valores e informe, a seguir, qual a média dos valores positivos e qual a média dos valores negativos. 8- Fazer um programa, usando vetores, que leia 100 valores e verificar a quantidade de elementos no vetor que são maiores que 4.0 e menores que 7.0. 9- Escreva um programa que leia um vetor inteiro de 30 posições e crie um segundo vetor, substituindo os valores zero por 1. Mostre os 2 vetores. 10- Dado um vetor VIN de 10 elementos inteiros, criar um vetor VAI de 30 elementos onde VAI[0], VAI[1] e VAI[2] recebe o valor de VIN[0] e assim por diante. Escrever um programa que leia VIN e imprima VAI. 11- Dado um vetor A de números inteiros, obter a maior diferença entre dois elementos consecutivos desse vetor. Imprimir a maior diferença e os índices dos respectivos elementos. 12- Dado um vetor A de números reais, fazer um programa para obter o maior e o segundo maior elemento do vetor. 13- Dado um vetor DIST com 15 distribuições de freqüências estatísticas, criar um vetor ACUM, também de 15 elementos, contendo as distribuições acumuladas . O programa deve ler DIST e imprimir DIST e ACUM. 14- Faça um programa que leia um vetor de 500 posições de números inteiros e divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor após os cálculos. 15- Seja um vetor A, construir dois vetores IMP e PAR, onde IMP é constituído dos elementos cuja posição em A é ímpar e PAR é constituído dos elementos cuja posição é par. 16- Seja um vetor A, construir ois vetores IMP e PAR, onde IMP é constituído dos elementos ímpares de A e PAR, dos elementos pares. 17- Faça um programa que leia um vetor A de 100 posições. Em seguida, compacte o vetor, retirando os valores nulos e negativos. Coloque o resultado no vetor B. 18- Escreva um programa que leia um conjunto de números inteiros, armazenando-os em um vetor. O conjunto de números lidos deve ser menor que o tamanho do vetor. O programa deve também ler um elemento e uma posição (índice) e inserir o elemento lido na posição especificada, deslocando todos os elementos seguintes, uma posição a frente. Imprimir o vetor. 19- Escrever um programa para ler um vetor de 20 posições. Em seguida, trocar o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Imprimir o vetor após a troca. 20- Escreva um programa que leia dois vetores de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante. 21- Seja A e B dois vetores contendo N elementos inteiros. Fazer um programa para: ler A e B. Calcular a soma dos elementos de A. Calcular a soma dos elementos de B. Obter o vetor C, que é a soma dos vetores A e B. Obter o vetor D, subtraindo B de A. Obter o produto escalar de A por B, isto é, A[0]*B[0] + A[1]*B[1] + .......+ A[N-1]*B[N-1]. 22- Dado um vetor de n inteiros, escreva um programa que imprima todos os múltiplos de 3 que contidos no vetor. estão 3 23- Dado dois vetores, A (N elementos) e B (M elementos), faça um programa que imprima todos os elementos comuns aos dois vetores. 24- Seja um vetor de tamanho TAM. Fazer um programa lê os elementos do vetor, calcular a devolve a maior soma entre dois elementos consecutivos do vetor. 25- Determine o tamanho T da maior seqüência de números iguais em um vetor A. Exemplo: Supor que sejam digitados os seguintes valores para A: 1 1 6 6 7 7 7 7 1 1 1, então T = 4 26- Verifique se os elementos de um vetor A estão em ordem crescente. 27- Faça um programa para intercalar dois vetores A e B já ordenados, formando o vetor C, também ordenado. 28- Dado um polinômio p(x) = a0 + a1x + a2x2 + ... + anxn, faça um programa que calcule p(x). Dados de entrada: grau n do polinômio, coeficientes do polinômio a0, a1, a2, ..., na e o valor de x . Obs.: representação de um polinômio em um vetor: Seja o polinômio de grau 3: -1 + 4x - 2x3 Sua representação no vetor é a seguinte: 0 -1 1 2 0 4 3 -2 4 5 29- Dado um polinômio A(x) = a0 + a1x + a2x2 + ... + anaxna e um segundo polinômio B(x) = b0 + b1x + b2x2 + ... + bnbxnb, faça um programa (programa) que: a) Leia os polinômios A(x) e B(x), armazenando-os nos vetores A e B respectivamente. Os dados de entrada são: grau na do polinômio A, grau nb do polinômio B e coeficientes dos polinômios A e B. A representação de um polinômio em um vetor já foi mostrada no exercício anterior. b) Calcule o vetor C, onde este representa a soma do polinômio A com o polinômio B. Exemplo: Supor A: 7 - x + 2x2 7 -1 2 Supor B: 2x - 4 x3 0 2 0 -4 7 1 2 -4 Então C vai ser: 7 + x + 2x2 - 4 x3 c) Calcule o vetor M, onde este representa o produto do polinômio A pelo polinômio B. Para o exemplo acima, M deve ser: 14x - 2x2 - 24x3 + 4x4 - 8x5 0 14 -2 -24 4 -8 d) Imprimir os vetores C e M. 30- Considere os vetores A e B de inteiros positivos. Determine o vetor C que é a interseção de A com B. Utilize o valor -1 para indicar final de vetor. Obs.: Caso algum vetor seja vazio, deve conter apenas o valor -1. 4 31- Para o vetor A, construa um vetor P formado pelos índices dos elementos pares de A. A = [ 1 3 6 7 8 ] então P= [2 4] Exemplo: Se 32- Escreva um programa que leia um vetor de 13 elementos inteiros, que é o gabarito de um teste da loteria esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o número do seu cartão e um vetor de respostas de 13 posições. Verifique para cada apostador o números de acertos, comparando o vetor de gabarito com o vetor de respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem "ganhador". Finalizar inserindo oum número de apostador negativo. 33- Escrever um programa para obter os 10 primeiros números primos acima de 100 e os armazenar em um vetor de 10 posições, na ordem em que são obtidos. 34- Escrever um programa para ler um vetor de 15 elementos e a seguir, obter um segundo vetor contendo todos os números primos do vetor inicial. Imprimir os vetores. 35- Escrever um programa para ler um vetor de 25 elementos e verificar quantos valores distintos que aparecem no vetor e contar também vezes cada valor aparece. 36- Faça um programa que leia um vetor de 500 posições de números inteiros e divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor após os cálculos. 37- Uma locadora de vídeos tem guardada, em um vetor de 500 posições, a quantidade de filmes retirados por seus clientes durante o ano de 1998. A locadora está fazendo uma promoção e, para cada 10 filmes retirados em 1998, o cliente tem direito a uma locação grátis. Faça um programa que crie um outro vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito. Obs.: Cada posição do vetor está relacionada a um cliente. Imprimir também o índice do cliente que recebeu o maior número de locações. Caso exista mais de um cliente com o mesmo número, imprimir todos. 38- Existe um livro de 370 páginas que foi recentemente impresso. A editora deseja fazer um estudo sobre possíveis erros de impressão. Desta forma, um especialista foi convidado a levantar quantos erros existem em cada página. Cada valor foi digitado na forma de um vetor, formando um conjunto de 370 valores. Definir um programa que leia este conjunto de dados, e responda: a) qual a página que tem mais erros? (suponha que só existe uma e ela é única) b) quantas páginas tem zero erros? c) quantas páginas tem mais de 10 erros? BOM TRABALHO!!!!!!!