Buscar

06.Vetores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 95 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

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 – Testede 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 inicializadosautomaticamente 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).

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes