Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Vetores Numéricos
DCC 119 – Algoritmos
2
� Em diversas situações os tipos básicos de dados
(inteiro, real, caracter, ....) não são suficientes para
representar a informação que se deseja armazenar.
� Exemplo, uma palavra: “AULA”.
� Valor de 50 produtos em uma loja
� Existe a possibilidade de construção de novos tipos
de dados a partir da composição (ou abstração) de
tipos de dados primitivos.
� Esses novos tipos têm um formato denominado
ESTRUTURA DE DADOS, que define como os tipos
primitivos estão organizados.
Estruturas de Dados
3
� Problema 1: Como poderíamos fazer um
algoritmo para ler 50 notas de uma turma e
calcular sua média?
Motivação
principal
{
inteiro i; //variável de controle
real nota, media, soma = 0;
para (i ���� 1; i <= N; i����i+1) faça
{
imprima("Digite uma nota:");
leia(nota);
soma ���� soma + nota;
}
media ���� soma/N;
imprima("Media = ", media);
}
Problema: Qual o
valor da 1a ou 5a
ou 40a nota?
4
� Problema 2: Fazer um programa para ler 50 notas de uma
turma e calcular a sua média. Imprimir as notas lidas juntamente
com a média da turma como na tabela.
Motivação
Nota Media
8.0 7.75
4.6 7.75
2.3 7.75
3.7 7.75
7.8 7.75
9.0 7.75
.... ...
� Como fazê-lo? No exemplo
anterior, uma nota é
sobreposta por outra em
cada iteração do para.
� A solução é armazenar
todas as 50 notas lidas...
Mas como?!?
5
� Quando uma determinada estrutura de dados
for composta de variáveis com o mesmo tipo
primitivo, temos um conjunto homogêneo de
dados.
� Essas variáveis são chamadas de variáveis
compostas homogêneas.
Variáveis Compostas Homogêneas
6
� As variáveis compostas homogêneas
unidimensionais são utilizadas para
representar arranjos unidimensionais de
elementos de um mesmo tipo, em outras
palavras, são utilizadas para representar
vetores.
Variáveis Compostas Homogêneas
Unidimensionais (Vetores)
7
� A sintaxe para declaração de uma variável deste tipo, tanto na
pseudolinguagem quanto em C é a seguinte:
tipo identificador [qtd de elementos];
Exemplo:
// vetor com 5 elementos do tipo inteiro
inteiro dados[5] ; // em C seria ficaria int dados[5];
Vetores: Declaração
0 1 2 3 4
dados
5 elementos quaisquer do tipo inteiro
Índices do vetor
8
� Cada um dos elementos de um vetor é referenciado individualmente por meio de
um número inteiro entre colchetes após o nome do vetor.
Exemplos:
� Considerando o vetor dados, quais valores serão atribuídos a X e Y nos exemplos
abaixo???
A instrução abaixo atribui um valor ao elemento 0 (zero) do vetor dados:
Vetores: Referência (Manipulação)
0 1 2 3 4
dados 3 2 74 1
PseudoLinguagem
X ���� dados[1];
Y ���� dados[4];
Linguagem c
dados[0] = 6; ou
I = 0;
dados[i] = 6;
PseudoLinguagem
dados[0] ���� 6; ou
I ���� 0;
dados[i] ���� 6;
Linguagem c
X = dados[1];
Y = dados[4];
9
O programa a seguir, usa o comando para para inicializar com zeros
os elementos de um array inteiro n de 10 elementos e o imprime sob
a forma de uma tabela.
Vetores: Exemplos
principal
{
inteiro n[10], i;
para (i����0; i <= 9; i����i+1) faça
{
n[i] ���� 0;
}
imprima("Elemento Valor");
para (i����0; i <= 9; i����i+1) faça
{
imprima(i," ", n[i]);
}
}
Elemento Valor
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10
Exemplo anterior em C:
Vetores: Exemplos
//inicializando um vetor (array)
#include <stdio.h>
int main()
{
int n[10], i;
for (i=0; i<= 9; i++)
{
n[i] = 0;
}
printf("%s%13s\n","Elemento", "Valor");
for (i=0; i<= 9; i++)
{
printf("%7d%13d\n",i,n[i]);
}
return 0;
}
Elemento Valor
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
11
O programa abaixo inicializa os dez elementos de um array s com os
valores: 2, 4, 6, ..., 20 e imprime o array em um formato de tabela.
Vetores: Exemplos
Elemento Valor
0 2
1 4
2 6
3 8
4 10
5 12
6 14
7 16
8 18
9 20
principal
{
constante inteiro TAMANHO ���� 10;
inteiro s[TAMANHO], j;
para (j ���� 0; j <= TAMANHO - 1; j ���� j+1) faça
{
s[j] ���� 2 + 2*j;
}
imprima("Elemento Valor");
para (j ���� 0; j <= TAMANHO - 1; j ���� j+1) faça
{
imprima (j, " ",s[j]);
}
}
12
Vetores: Exemplos
#include <stdio.h>
#define TAMANHO 10
int main()
{
int s[TAMANHO], j;
for (j=0; j<= TAMANHO - 1; j++)
{
s[j] = 2 + 2*j;
}
printf("%s%13s\n","Elemento", "Valor");
for (j=0; j<= TAMANHO - 1; j++)
{
printf("%8d%13d\n",j,s[j]);
}
return 0;
}
Elemento Valor
0 2
1 4
2 6
3 8
4 10
5 12
6 14
7 16
8 18
9 20
Exemplo anterior em C:
13
Vetores e Subrotinas
� Em pseudolinguagem, a passagem de parâmetros
em procedimentos e funções é feita por cópia. Para
realizar a passagem por referência, utilize a palavra
ref antes do tipo de vetor.
� Em C, vetores são passados sempre por referência.
� Tanto em C, quanto em pseudolinguagem, o
tamanho do vetor pode ser omitido.
14
Vetores e Subrotinas
No exemplo abaixo é apresentado um procedimento imprimeVetor
que imprime um vetor de tamanho tam.
imprimeVetor (inteiro vet[], inteiro tam)
{
inteiro i;
para (i ���� 0; i <= tam - 1; i ���� i+1) faça
{
imprima (vet[i]);
}
}
principal
{
constante inteiro TAMANHO ���� 10;
inteiro s[TAMANHO], j;
para (j ���� 0; j <= TAMANHO - 1; j ���� j+1)
{
imprima ("Informe o valor do vetor na posição ", j);
leia (s[j]);
}
imprimeVetor(s, TAMANHO);
}
15
Vetores e Subrotinas
Exemplo anterior em C:
#include <stdio.h>
#define TAMANHO 10
void imprimeVetor (int vet[], int tam)
{
int i;
for (i = 0; i <= tam - 1; i++)
{
printf("%d\n", vet[i]);
}
}
int main()
{
int s[TAMANHO], i;
for (i = 0; i <= TAMANHO- 1; i++)
{
printf ("Informe o valor do vetor na posição %d: ", i);
scanf (“%d", &s[i]);
}
imprimeVetor(s, TAMANHO);
return 0;
}
16
Exercício Resolvido 1
� Vamos ver agora o teste de mesa para o
seguinte problema:
� Criar uma função que receba um vetor de
números reais e seu tamanho e retorne o índice
do maior valor contido no vetor. Se houver mais
de uma ocorrência do maior valor, retornar o
índice do primeiro. Faça um programa principal
para testar a função.
17
Exercício 1 - Solução Proposta
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
18
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Inicialmente são
criadas as variáveis
19
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Chama a função
encontraMaior
20
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Vetor e seu
tamanho são
passados como
parâmetro
21
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 3.0
indice = 0
Variávies locais da
função são inicializadas
22
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior)
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 3.0
indice = 0
i = 1
Começa a busca pelo
índice 1, uma vez que o
índice zero já foi utilizada
para inicializar a variável
indice
23
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 4.3 > 3.0 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 3.0
indice = 0
i = 1
Executa o primeiro teste
24
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 4.3 > 3.0 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 4.3
indice = 1
i = 1
Sendo o teste verdadeiro,
atualiza variáveis maior e
indice.
25
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 4.3
indice = 1
i = 2
Passa para a próxima
iteração do loop.
26
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 5.6 > 4.3 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 4.3
indice = 1
i = 2
Mais um teste verdadeiro.
27
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 5.6 > 4.3 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 5.6
indice = 2
i = 2
Sendo o teste verdadeiro,
atualiza variáveis maior e
indice.
28
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 5.6
indice = 2
i = 3
Passa para a próxima
iteração do loop.
29
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 2.8 > 5.6 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 5.6
indice = 2
i = 3
Valor do vetor é menor,
não entra na condição.
30
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 5.6
indice = 2
i = 4
Passa para a próxima
iteração do loop.
31
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 7.9 > 5.6 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 5.6
indice = 2
i = 4
Mais um teste verdadeiro.
32
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 7.9 > 5.6 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 4
Sendo o teste verdadeiro,
atualiza variáveis maior e
indice.
33
Exercício 1 - Teste de Mesa
inteiro encontraMaior
(real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 4
Passa para a penúltima
iteração do loop.
34
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( 3.4 > 7.9 )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 4
Valor do vetor é menor,
não entra na condição.
35
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 5
Passa para a última
iteração do loop (nesse
caso, não entra)
36
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne 4;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 5
Retorna o valor do maior
valor
37
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 5
posicao = 4
Volta para a função principal,
pegando o retorno do índice
do maior valor
38
Exercício 1 - Teste de Mesa
inteiro encontraMaior (real vet[], inteiro tam)
{
inteiro indice, i;
real maior ���� vet[0];
indice ���� 0;
para (i ���� 1; i < tam; i ���� i+1) faça
{
se( vet[i] > maior )
{
maior ���� vet[i];
indice ���� i;
}
}
retorne indice;
}
principal
{
real vetor[6] = {3.0, 4.3, 5.6, 2.8, 7.9, 3.4};
inteiro posicao;
posicao ���� encontraMaior( vetor, 6)
imprima("Maior valor esta na posicao ", posicao);
}
Variáveis
maior = 7.9
indice = 4
i = 5
posicao = 4
Maior valor esta na posicao 4
Imprime o índice do
maior valor
39
Exercício Resolvido 2
� Criar uma função em C que receba um vetor
de números reais e um valor inteiro
representando o seu tamanho. Essa função
deverá ordenar o vetor em ordem crescente.
40
Exercício 2 - Solução Proposta
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
41
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
Vamos supor para esse
exercício que o vetor de
entrada tenha 5 posições e
os seguintes valores
11.0, 22.0, 3.0, 44.0, 5.0
42
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
Inicialmente função é
chamada passando-se
os valores propostos
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
43
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
A seguir são criadas as
variáveis auxiliares
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i =
j =
aux =
44
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
A idéia central é ir “puxando”
os menores valores através de
trocas para o início do vetor
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j =
aux =
45
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
É no loop interno que iremos iterar
sobre o vetor efetuando essas trocas,
conforme os menores valores forem
sendo identificados.
Repare que iremos iterar do último
elemento até o elemento i+1.
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 4
aux =
46
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 44.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
Os testes são feitos sempre entre os
valores i e o seu antecessor (i-1)
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 4
aux =
47
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 44.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
Como é menor, efetua a troca
5.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 4
aux = 5.0
48
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 44.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.044.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 4
aux = 5.0
49
Exercício 2 – Teste
de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 44.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 4
aux = 5.0
50
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 3
aux = 5.0
51
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 3.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 3
aux = 5.0
Aqui o teste falha. Vai para a próxima
iteração do loop interno.
52
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 2
aux = 5.0
53
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 3.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.03.022.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 2
aux = 5.0
54
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 3.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.03.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 2
aux = 3.0
Como valor é menor, efetua a troca
como visto anteriormente.
55
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.03.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 1
aux = 3.0
56
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 3.0 < 11.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.03.011.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 1
aux = 3.0
57
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 3.0 < 11.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 1
aux = 3.0
Como valor é menor, efetua a troca
como visto anteriormente.
58
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 0
j = 0
aux = 3.0
Nesse ponto, como j = 0, saiu do laço
interno e volta para o externo.
59
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 0
aux = 3.0
Como o i é incrementado, a posição
0 do vetor não será mais modificada
60
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 4
aux = 3.0
61
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 44.0 < 5.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 4
aux = 3.0
62
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 3
aux = 3.0
63
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.05.022.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 3
aux = 3.0
64
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 5.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.05.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 3
aux = 5.0
Como valor é menor, efetua a troca
como visto anteriormente.
65
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if (vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.05.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 2
aux = 5.0
66
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if (5.0 < 11.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.05.011.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 2
aux = 5.0
67
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if (5.0 < 11.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 2
aux = 5.0
Como valor é menor, efetua a troca
como visto anteriormente.
68
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if (vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 1
j = 1
aux = 5.0
Nesse ponto, como j = 1, saiu do laço
interno e volta para o externo.
69
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if (vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 2
j = 1
aux = 5.0
Como o i é incrementado, a posição
1 do vetor não será mais modificada
70
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 44.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 2
j = 4
aux = 5.0
71
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 22.0 < 11.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 2
j = 3
aux = 5.0
72
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 2
j = 2
aux = 5.0
Como j = 2, saiu do laço interno e
volta para o externo.
73
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 3
j = 2
aux = 5.0
Como o i é incrementado, a posição
2 do vetor não será mais modificada
74
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 44.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 3
j = 4
aux = 5.0
75
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 44.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 3
j = 3
aux = 5.0
Como j = 3, saiu do laço interno e
volta para o externo.
76
Exercício 2 – Teste de Mesa
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( 44.0 < 22.0 )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
44.022.011.05.03.0
0 1 2 3 4
Variáveis:
tam = 5
i = 4
j = 3
aux = 5.0
Como o i é incrementado, e sai do laço
externo, finalizando a procedimento.
77
#include <stdio.h>
void ordena(float vet[], int tam)
{
int i, j;
float aux;
for(i = 0; i <= (tam-2); i++)
{
for(j = tam-1; j > i; j--)
{
if ( vet[j] < vet[j-1] )
{
aux=vet[j];
vet[j]= vet[j-1];
vet[j-1]=aux;
}
}
}
}
int main()
{
int i;
float vet[5]={11.0,22.0,3.0,44.0,5.0};
ordena(vet, 5);
for (i=0; i < 5; i++)
printf("%.2f\n",vet[i]);
return 0;
}
Programa Completo
78
Exercícios
1) Quais são os elementos do vetor referenciados pelas
expressões abaixo ?
vet
a) vet[3] b) vet[0] c) vet[13]
2) Qual é a diferença entre os números “3” das duas
instruções abaixo ?
inteiro vet[3];
vet[3] ���� 5;
1 2 4 7 4 2 8 9 0 6 5 4 3
79
Exercícios
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.
4) Faça um algoritmo para ler e somar dois
vetores de 10 elementos inteiros. Imprima ao
final os valores dessa soma, elemento a
elemento.
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.
80
Exercícios
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.
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.
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.
81
Vetores Numéricos
DCC 120
82
� O vetor é uma estrutura:
�Homogênea
�Estática
� Todas as componentes são de um mesmo tipo
e seu tamanho permanece o mesmo durante
toda a execução do programa.
Vetores
83
� A sintaxe em C para declaração de variável do tipo
vetor é a seguinte
tipo_primitivo identificador[qtde_elementos];
Exemplo:
// vetor com 5 (0 a 4) elementos do tipo int
int dados[5];
Vetores: Declaração
0 1 2 3 4
dados
5 elementos quaisquer do tipo int
Índices do vetor
84
� Cada um dos elementos de um vetor é referenciado individualmente por meio de
um número inteiro entre colchetes após o nome do vetor.
Exemplos:
� X = valores[1]; //atribui a x o valor da posição 1 do vetor valores
� Y = valores[4]; //atribui a x o valor da posição 4 do vetor valores
� valores[0] = 3.2; // a posição zero do vetor valores recebe o valor 3.2
Vetores: Referência
(Manipulação)
0 1 2 3 4
valores 3.6 2.7 7.94.2 1.2
85
É possível fornecer valores a cada elemento de
um vetor no momento da sua declaração.
Exemplo:
float valores[5] = {3.6, 2.7, 4.2, 7.9, 1.2};
float nros[5] = {0.0}; // como fica o vetor????
Vetores: Inicialização
0 1 2 3 4
valores 3.6 2.7 7.94.2 1.2
86
Observações:
� Os vetores NÃO são automaticamente inicializados!!!
� Se houver menos valores do que o número de elementos do vetor ,
os elementos restantes são inicializados
automaticamente com o valor
zero.
int n[5] = {32, 64, 27};
� A seguinte declaração causa um erro de sintaxe:
int n[5] = {32, 64, 27, 18, 95, 14};
� O tamanho do vetores pode ser omitido:
int n[ ] = {1, 2, 3, 4, 5};
Vetores: Inicialização
87
Vetores: Exemplo
� Leia um vetor de 10 posições (inteiros) e imprima-o na ordem
invertida (da última para a primeira posição).
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numeros[10],i;
for (i=0; i<10;i++){
printf("Digite valor %d: ",i);
scanf("%d", &numeros[i]);
}
printf("Vetor na ordem invertida:\n");
for (i=9; i>=0; i--)
printf("%d\n",numeros[i]);
return 0;
}
88
Vetores e Subrotinas
� Em C, vetores são passados sempre por
referência.
� Ou seja, as modificações feitas na subrotina
refletem nos dados do vetor passado como
parâmetro pela função chamadora.
89
Vetores e Subrotinas: Exemplo
� O exemplo a seguir apresenta subrotinas
para leitura e impressão do vetor e cálculos
do maior, menor e média dos elementos.
90
Vetores e Subrotinas: Exemplo (1/3)
#include <stdio.h>
#define TAMANHO 10
void leVetor(int vet[], int tam)
{
int i;
for(i = 0; i < tam; i++)
{
printf("Informe o valor do vetor na posição %d: ", i);
scanf("%d", &vet[i]);
}
}
void imprimeVetor(int vet[], int tam)
{
int i;
printf("Vetor: ");
for(i = 0; i < tam; i++)
{
printf("%d ", vet[i]);
}
}
91
Vetores e Subrotinas: Exemplo (2/3)
int maiorElemento(int vet[], int tam)
{
int i, maior = vet[0];
for(i = 1; i < tam; i++)
{
if(vet[i] > maior)
maior = vet[i];
}
return maior;
}
int menorElemento(int vet[], int tam)
{
int i, menor = vet[0];
for(i = 1; i < tam; i++)
{
if(vet[i] < menor)
menor = vet[i];
}
return menor;
}
92
Vetores e Subrotinas: Exemplo (3/3)
float mediaVetor(int vet[], int tam)
{
int i, soma = 0;
for(i = 0; i < tam; i++)
{
soma = soma + vet[i];
}
return soma / (float)tam;
}
int main()
{
int v[TAMANHO];
leVetor(v, TAMANHO);
imprimeVetor(v, TAMANHO);
printf("\nO maior elemento do vetor é %d.", maiorElemento(v, TAMANHO));
printf("\nO menor elemento do vetor é %d.", menorElemento(v, TAMANHO));
printf("\nA média dos valores do vetor é %.2f.",mediaVetor(v, TAMANHO));
return 0;
}
93
Exercícios
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.
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.
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.”
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.
94
Exercícios
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.
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 alunso reprovados.(< 60)
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.
95
Exercícios
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.
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.
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).