Prévia do material em texto
Vetores
Resolução dos Exercícios
Primeira Lista (Slide 78)
1) Quais são os elementos do vetor referenciados pelas expressões abaixo?
Vet [ 1 | 2 | 4 | 7 | 4 |2 | 8 | 9 | 0 | 6 | 5 | 4 | 3 ]
a) vet[3] = 7
b) vet[0] = 1
c) vet[13] = Posição 13, fora dos limites do vetor.
2) Qual é a diferença entre os números 3 das duas instruções abaixo ?
inteiro vet[3] : Declaração de um vetor de inteiros de 3 elementos.
Vet[3] ← 5 : Valor inteiro “5” guardado na posição de índice 3 do vetor.
3) Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o
número de alunos com idade superior a média.
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
int idade[N], i, cont;
float media;
media = 0;
cont = 0;
for (i=0; i<N; i++)
{
printf ("Informe idade do %d aluno: ", i+1);
scanf ("%d", &idade[i]);
media = media + idade[i];
}
media = media/N;
for (i=0; i<N; i++)
{
if (idade[i] > media)
{
cont++;
}
}
printf ("\nExistem %d alunos com idade acima da media.", cont);
return 0;
}
4) Faça um algoritmo para ler e somar dois vetores de 10 elementos inteiros. Imprima
ao final os valores dessa soma.
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
int vet1[N], vet2[N], vet_soma[N], i;
printf ("Leitura do primeiro vetor.\n");
for (i=0; i<N; i++)
{
printf ("Informe o valor do vetor na posição %d : ", i+1);
scanf ("%d", &vet1[i]);
}
printf ("\nLeitura do segundo vetor.\n");
for (i=0; i<N; i++)
{
printf (“Informe o valor do vetor na posição %d : ", i+1);
scanf ("%d", &vet2[i]);
}
printf ("\nO vetor resultante da soma dos vetores eh:\n");
for (i=0; i<N; i++)
{
vet_soma[i] = vet1[i] + vet2[i];
printf ("Vetor Soma [%d] : %d\n",i+1, vet_soma[i]);
}
return 0;
}
5) Refaça o exercício anterior criando um procedimento para efetuar a leitura dos
vetores e um segundo procedimento que imprimirá a soma dos vetores.
#include <stdio.h>
#include <stdlib.h>
#define N 10
void leVetor (int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o valor do vetor na posição %d : ", i+1);
scanf ("%d", &v[i]);
}
}
void imprimeSoma (int v1[], int v2[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Vetor Soma [%d] : %d\n",i+1, v1[i] + v2[i]);
}
}
int main()
{
int vet1[N], vet2[N];
printf ("Leitura do primeiro vetor.\n");
leVetor (vet1);
printf ("Leitura do segundo vetor.\n");
leVetor (vet2);
printf ("\nO vetor resultante da somo dos vetores eh:\n");
imprimeSoma (vet1, vet2);
return 0;
}
6) Refaça o exercício anterior criando uma função que receba o vetor com a idade dos
alunos e retorne a quantidade de alunos com idade superior a média.
#include <stdio.h>
#include <stdlib.h>
#define N 10
int acimaMedia (int v[])
{
int i, cont;
float media;
media = 0;
cont = 0;
for (i=0; i<N; i++)
{
media = media + v[i];
}
media = media/N;
for (i=0; i<N; i++)
{
if (v[i] > media)
{
cont++;
}
}
return (cont);
}
int main()
{
int idade[N], i;
for (i=0; i<N; i++)
{
printf ("Informe idade do %d aluno: ", i+1);
scanf ("%d", &idade[i]);
}
printf ("\nExistem %d alunos com idade acima da media.", acimaMedia
(idade));
return 0;
}
7) Faça um algoritmo que leia, via teclado, 20 valores do tipo inteiro e determine qual
o menor valor existente no vetor e imprima valor e seu índice no vetor.
#include <stdio.h>
#include <stdlib.h>
#define N 20
int main()
{
int vet[N], i, menor, pos;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &vet[i]);
}
menor = vet[0];
pos = 1;
for (i=1; i<N; i++)
{
if (vet[i] < menor)
{
menor = vet[i];
pos = i+1;
}
}
printf ("\nO menor valor eh %d e esta na posicao %d.", menor, pos);
return 0;
}
8) Refaça o exercício anterior criando um procedimento que receba como parâmetro
o vetor e imprima o menor valor e seu índice no vetor.
#include <stdio.h>
#include <stdlib.h>
#define N 20
void menorValor (int v[])
{
int menor, pos, i;
menor = v[0];
pos = 1;
for (i=1; i<N; i++)
{
if (v[i] < menor)
{
menor = v[i];
pos = i+1;
}
}
printf ("\nO menor valor eh %d e esta na posicao %d.", menor, pos);
}
int main()
{
int vet[N], i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &vet[i]);
}
menorValor (vet);
return 0;
}
Segunda Lista (Slide 93)
1) Desenvolva um programa que leia um vetor de números reais, um escalar e
imprima o resultado da multiplicação do vetor pelo escalar.
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
int i;
float vet[N], escalar;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%f", &vet[i]);
}
printf ("Informe um escalar: ");
scanf ("%f", &escalar);
for (i=0; i<N; i++)
{
vet[i] = vet[i]*escalar;
printf ("%.2f ", vet[i]);
}
return 0;
}
2) Faça um procedimento que faça a leitura um vetor de 10 elementos inteiros e
imprima somente os valores armazenados nos índices pares.
#include <stdio.h>
#include <stdlib.h>
#define N 10
void indicesPares()
{
int vet[N], i;
for (i=0; i<N; i++)
{
printf ("Informe o valor da posicao %d : ", i+1);
scanf ("%d", &vet[i]);
}
for (i=0; i<N; i++)
{
if ((i+1)%2 == 0)
{
printf ("posicao %d: %d\n",i+1, vet[i]);
}
}
}
int main(){
int vet[N];
indicesPares();
return 0;
}
3) Faça um programa que leia um vetor com 15 valores reais. A seguir, encontre o
menor elemento do vetor e a sua posição dentro do vetor, mostrando: O menor
elemento do vetor esta na posição XXXX e tem o valor YYYYY.
#include <stdio.h>
#include <stdlib.h>
#define N 15
void leVetor (float v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%f", &v[i]);
}
}
void menorValor (float v[])
{
int pos, i;
float menor;
menor = v[0];
pos = 1;
for (i=1; i<N; i++)
{
if (v[i] < menor)
{
menor = v[i];
pos = i+1;
}
}
printf("\nO menor elemento do vetor esta na posicao %d e tem o valor
%.2f.", pos, menor);
}
int main()
{
float vet[N];
leVetor (vet);
menorValor (vet);
return 0;
}
4) Faça um programa que leia um vetor de 15 posições (reais) e depois um valor a ser
procurado no vetor. Imprima se o valor foi ou não encontrado e a quantidade de
vezes que o valor está presente no vetor.
#include <stdio.h>
#include <stdlib.h>
#define N 15
void leVetor (float v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%f", &v[i]);
}
}
int encontraValor (float v[], float val)
{
int i, cont;cont = 0;
for (i=0; i<N; i++)
{
if (v[i] == val)
{
cont++;
}
}
return (cont);
}
int main()
{
float vet[N], valor;
leVetor (vet);
printf ("Digite um valor a ser procurado no vetor: ");
scanf ("%f", &valor);
if (encontraValor(vet, valor) == 0)
{
printf ("Valor nao foi encontrado.");
}
else
{
printf ("\nValor foi encontrado %d vez(es).", encontraValor(vet,
valor));
}
return 0;
}
5) Faça uma função que receba um vetor de números inteiros e um valor inteiro. A
função deverá procurar este segundo valor neste vetor e retornar seu índice se for
encontrado. Se o elemento não for encontrado, retornar -1.
#include <stdio.h>
#include <stdlib.h>
#define N 5
void leVetor (int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &v[i]);
}
}
int encontraPosicao (int v[], int val)
{
int i, pos;
pos = -1;
for (i=0; i<N && pos == -1; i++)
{
if (v[i] == val)
{
pos = i+1;
}
}
return (pos);
}
int main()
{
int vet[N], valor;
leVetor (vet);
printf ("Digite um valor a ser procurado no vetor: ");
scanf ("%d", &valor);
if (encontraPosicao(vet, valor) == -1)
{
printf ("\nValor nao foi encontrado.");
}
else
{
printf ("\nValor foi encontrado na posicao %d.",
encontraPosicao(vet, valor));
}
return 0;
}
6) Dada uma tabela com as notas de uma turma de 20 alunos, faça funções que
retornem:
a) A média da turma.
b) a quantidade de alunos aprovados (>=60)
c) a quantidade de alunos reprovados.(< 60)
#include <stdio.h>
#include <stdlib.h>
#define N 20
void leVetor (float v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe a nota do aluno %d : ", i+1);
scanf ("%f", &v[i]);
}
}
float mediaTurma (float v[])
{
int i;
float media;
media = 0;
for (i=0; i<N; i++)
{
media = media + v[i];
}
media = media/N;
return (media);
}
int aprovados (float v[])
{
int i, cont;
cont = 0;
for (i=0; i<N; i++)
{
if (v[i] >= 60)
{
cont++;
}
}
return (cont);
}
int reprovados (float v[])
{
int i, cont;
cont = 0;
for (i=0; i<N; i++)
{
if (v[i] < 60)
{
cont++;
}
}
return (cont);
}
int main()
{
float notas[N];
leVetor (notas);
printf ("\nA media da turma eh: %.2f", mediaTurma(notas));
printf ("\nO numero de aprovados eh: %d", aprovados(notas));
printf ("\nO numero de reprovados eh: %d", reprovados(notas));
return 0;
}
7) Faça um programa que leia um conjunto de 20 valores e armazene-os num vetor V.
Particione-o em dois outros vetores, P e I, conforme os valores de V forem pares ou
ímpares. No final, imprima os valores dos 3 vetores.
#include <stdio.h>
#include <stdlib.h>
#define N 20
void imprimaVetor ( int v[], int tam)
{
int i;
for (i=0; i<tam; i++)
{
printf ("%d ", v[i]);
}
}
int main()
{
int vet[N], pares[N], impares[N], contaPares, i;
contaPares = 0;
contaImpares = 0;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &vet[i]);
if (vet[i]%2 == 0)
{
pares[contaPares] = vet[i];
contaPares++;
}
else
{
impares[contaImpares] = vet[i];
contaImpares++;
}
}
printf("\nO vetor inteiro:\n");
imprimaVetor (vet, N);
printf("\nO vetor de pares:\n");
imprimaVetor (pares, contaPares);
printf("\nO vetor de impares:\n");
imprimaVetor (impares, contaImpares);
return 0;
}
8) Faça um programa que leia um vetor G[13] que é o gabarito de um teste da loteria
esportiva, contendo os valores 1 quando for coluna 1, 0 quando for coluna do meio e
2 quando for coluna 2.
Ler a seguir, para 5 apostadores, seu cartão de apostas (R[13]) e depois da leitura
imprimir quantos acertos o apostador teve.
Faça o teste através de funções.
#include <stdio.h>
#include <stdlib.h>
#define N 13
void leVetor (int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &v[i]);
}
}
int acerto (int g[], int r[])
{
int ac, i;
ac = 0;
for (i=0; i<N; i++)
{
if (g[i] == r[i])
{
ac++;
}
}
return (ac);
}
int main()
{
int G[N], R[N], i;
printf ("Digite o gabarito dos jogos:\n");
printf ("1) primeira coluna\n0) coluna do meio\n2) terceira
coluna\n\n");
leVetor (G);
for (i=0; i<5; i++)
{
printf ("\n\nDigite o jogo %d:\n", i+1);
printf ("1) primeira coluna\n0) coluna do meio\n2) terceira
coluna\n\n");
leVetor (R);
printf ("Este jogo tem %d acertos.\n", acerto(G, R));
}
return 0;
}
9) Com relação ao exercício anterior, calcule e mostre o percentual dos apostadores
que fizeram de 10 a 13 pontos e o percentual dos apostadores que fizeram menos do
que 10 pontos.
#include <stdio.h>
#include <stdlib.h>
#define N 13
void leVetor (int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &v[i]);
}
}
int acerto (int g[], int r[])
{
int ac, i;
ac = 0;
for (i=0; i<N; i++)
{
if (g[i] == r[i])
{
ac++;
}
}
return (ac);
}
int main()
{
float perc;
int G[N], R[N], i, a, b;
//a conta os jogos que fizeram entre 10 e 13 pontos
//b conta os jogos que fizeram menos de 10 pontos
a = 0;
b = 0;
printf ("Digite o gabarito dos jogos:\n");
printf ("1) primeira coluna\n0) coluna do meio\n2) terceira
coluna\n\n");
leVetor (G);
for (i=0; i<5; i++)
{
printf ("\n\nDigite o jogo %d:\n", i+1);
printf ("1) primeira coluna\n0) coluna do meio\n2) terceira
coluna\n\n");
leVetor (R);
printf ("Este jogo tem %d acertos.\n", acerto(G, R));
if (acerto(G, R)>=10 && acerto(G, R)<=13)
{
a++;
}
else
{
b++;
}
}
perc = a/5.0;
printf ("%.2f%% dos jogos fizeram entre 10 e 13 pontos.\n", perc*100);
perc = b/5.0;
printf ("%.2f%% dos jogos fizeram menos de 10 pontos.\n", perc*100);
return 0;
}
10) Faça um programa que leia um vetor de valores inteiros e imprima-o na ordem
crescente. O vetor deve ter tamanho N (utilize a diretiva #define).
#include <stdio.h>
#include <stdlib.h>
#define N 10
void leVetor (int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("Informe o numero da posicao %d : ", i+1);
scanf ("%d", &v[i]);
}
}
void ordena (int v[])
{
int i, j, aux;
for (i=0; i<N-1; i++)
{
for (j=i+1; j<N; j++)
{
if (v[i] > v[j])
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
}
void imprime ( int v[])
{
int i;
for (i=0; i<N; i++)
{
printf ("%d ", v[i]);
}
}
int main()
{
int vet[N];
leVetor(vet);
ordena (vet);
printf ("\n\nImprimindo vetor ordenado:\n");
imprime (vet);
return 0;
}