CI208 – Programação de Computadores
2o semestre 2012
Exercícios ♯06
Vetores



Os exercícios 18-19 foram retirados e adaptados de material do IME/USP.
Os exercícios desta lista são compilações de materiais gerados por professores do DINF/UFPR para a disciplina de CI208 - Programação de Computadores.

Nos exercícios abaixo, os nomes entre parênteses no início do enunciado são sugestões para os nomes dos programas solicitados.

1.

(censo)  Foi realizada uma pesquisa entre N habitantes de uma certa região. De cada habitante foram coletados os dados: Idade, sexo, salário e número de filhos.
Faça um programa em linguagem C que receba do usuário uma lista de dados (idade,sexo,salario,num_filhos) e calcule a média salarial, a maior e menor idade do grupo, a média de idade e a quantidade de mulheres com 3 filhos que recebe até R$ 500,00. Quando a idade fornecida for 0 (zero), o programa deve exibir os resultados e terminar.
Use uma função para cada cálculo.

2.

(somavetores)  Fazer um programa que leia do teclado duas seqüências de 20 inteiros em dois vetores distintos e gere um 3o vetor em que cada elemento é igual à soma dos elementos correspondentes dos dois vetores lidos anteriormente, imprimimdo este vetor na tela após a operação.
A operação de soma dos vetores deve ser feita em uma função à parte denominada soma_vetor() que recebe 4 parâmetros: 3 vetores de inteiros e um inteiro indicando o tamanho dos vetores. Esta função deve somar os dois vetores indicados nos dois primeiros parâmetros e armazenar o resultado no vetor indicado como 3o parâmetro.

3.

(lervetor)  Escreva a função obtem_vetor() que ao ser chamada preencha um vetor de inteiros com dados do usuário. Esta função deve ter como argumentos o vetor a ser preenchido, o tamanho máximo do vetor e o valor inteiro que o usuário deve digitar indicando final da entrada de dados (este valor NÃO deve ser armazenado no vetor). A função deve retornar a quantidade de elementos lidos.

4.

(numvezes)  Escreva a função conta_ocorr() que recebe 2 argumentos: o 1o argumento é um vetor de caracteres e o 2o argumento é um caracter. A função deve retornar como resultado o número de vezes o 2o argumento da função ocorre dentro do vetor. O vetor de caracteres recebido pela função possui como último elemento o valor inteiro 0 (zero), que indica o final do vetor.

5.

(soma30)  Faça uma função que some todos os valores reais de um vetor com no máximo 30 elementos.

6.

(duasvezes)  Escreva uma função que retorne os elementos que aparecem mais que 2 (duas) vezes em um vetor.

7.

(inverte)  Dada uma seqüência de N números, imprimí-la na ordem inversa à da leitura.

8.

(verifpertence)  Fazer um programa que leia e armazene em um vetor uma seqüência de inteiros. Em seguida o programa deve ler uma seqüência de inteiros informados pelo usuário e, para cada um deles, dizer se ele pertence ou não ao vetor armazenado previamente.

9.

(histograma)  Crie um programa que leia uma quantidade arbitrária N de números inteiros em um vetor e imprima, para cada número entre 0 e 100, a quantidade de vezes este número ocorre no vetor lido inicialmente.

10.

(verifrepete)  Escreva um programa que leia 2 seqüências de 15 números cada e diga quantos números da segunda lista são iguais aos seus correspondentes da primeira lista. Seu programa deve usar a função produzida no Exercício 3 para a leitura das 2 seqüências.

11.

(verifigual)  Fazer um programa que leia duas seqüências de N inteiros em dois vetores distintos, e verifique se os dois vetores são idênticos. A verificação da identidade entre os vetores deve ser feita por uma função denominada verifIdent() que recebe como parâmetros dois vetores de inteiros e retorna o valor 1 (um) se os vetores forem idênticos e 0 (zero) caso contrário.

12.

(verifpermuta)  Fazer um programa que leia duas seqüência de N inteiros em dois vetores distintos, digamos, V e W e verifique se um vetor é uma permutação do outro, isto é, se eles tem os mesmos elementos mas em ordem diferente. Não vale ordená-los previamente.

13.

(pertence)  Fazer um programa que leia duas seqüências de inteiros, não necessariamente contendo a mesma quantidade de números, e diga se a segunda seqüência está contida na primeira. Esta verificação deve ser feita por uma função. O tamanho máximo das seqüências deve estar definida no programa.

14.

(concatena)  Fazer um programa que leia duas seqüências de inteiros, não necessariamente contendo a mesma quantidade de números, e construa um terceiro vetor, sem destruir os originais, que é a concatenação do primeiro com o segundo. Ou seja, se o primeiro vetor contiver os valores [7 3] e o segundo [9 2], a concatenação dos dois conterá [7 3 9 2]. A concatenação deve ser feita por uma função. O tamanho máximo das seqüências deve estar definida no programa.

15.

(intercala)  Fazer um programa que leia dois conjuntos de inteiros contendo cada um a mesma quantidade de valores, e construa um terceiro vetor, sem destruir os originais, que é a intercalação do primeiro com o segundo. Ou seja, se o primeiro vetor contiver os valores [7 3] e o segundo [9 2], a intercalação dos dois conterá [7 9 3 2]. A intercalação deve ser feita por uma função. O tamanho dos vetores deve estar definida no programa.

16.

(polinomio)  Dados n+1 valores reais, a_0, a_1, ..., a_n representando os coeficientes de um polinômio de grau n, calcular o valor do polinômio nos pontos X indicados pelo usuário, até o usuário entrar com o valor 999.99. O Valor do polinômio deve ser calculado pela função calc_pol(), que recebe 3 (três) parâmetros: um vetor de valores reais representando os coeficientes de um polinômio, um valor real representando o valor da variável X do polinômio, e uma referência para uma variável real que receberá o valor do polinômio no ponto X.

17.

(ordenaint)  Fazer um programa que leia duas seqüência de inteiros, não necessariamente contendo a mesma quantidade de números, ordene-os, e em seguida imprima todos os números ordenados em ordem crescente. Exemplo:
V1: 7 3 2 6
V2: 5 1 8 4 9
Saída: 1 2 3 4 5 6 7 8 9

18.

(escalar)  Dados dois vetores X e Y de 20 posições cada, determinar o produto escalar entre os dois vetores. O produto escalar entre dois vetores é dado por:

x0y0 + x2y2 + x3y3 + x4y4 + x5y5 + ⋅⋅⋅

19.

(qtdistintos)  Dada uma seqüência de N números, determinar quantos números distintos compõem a seqüência e o número de vezes que cada um deles ocorre na mesma. Exemplo:
N=5
1 2 3 2 3
a seqüência tem três números distintos, 1, 2 e 3. Ocorrências:
1 1 vez
2 2 vezes
3 2 vezes

20.

(localizaX)  Escreva uma função que recebe um vetor, seu tamanho e um número X. Mostre a posição de cada elemento igual a X deste vetor.

21.

(substnulos)  Escreva uma função que recebe um vetor e seu tamanho. Substitua todos os valores nulos (0) do vetor por 1.

22.

(trocaelems)  Escreva uma função que recebe um vetor e seu tamanho. A função deve trocar o 1o elemento com o último, o 2o elemento com o penúltimo, até o meio do vetor.

23.

(loteria)  Escrever um programa lê um vetor com 13 posições que é o gabarito de um teste de loteria esportiva, contendo os valores 1(coluna 1), 2(coluna 2) e 3(coluna do meio). Ler, a seguir, 1 aposta, e então o programa deve imprimir o número de acertos.