Sei sulla pagina 1di 16

Introdução à Programação

Prof. Bins Ely

Vetores

Adaptado de slides preparados por Giseli Rabello Lopes

1
Vetores (array)
• Trata-se de automatizar a declaração de um grande número
de dados de um mesmo tipo simples.
• Cada elemento do vetor é acessado através de um índice
inteiro.
Declaração: Exemplo:
Tipo: nome_vetor[tamanho] Declaração:
primeira posição=0; Real: v[100]
última posição=tamanho-1; Acesso:
v[0] //primeira posição
v[99] //última posição

2
Vetores em C
• Declaração:
– tipo nome_vetor[tamanho];
• Exemplo:
– float v[100];
– Obs.: índice do tipo int para acessar
• primeira posição=0;
• última posição=99;

• Atribuição:
– v [9] = 87;
• Acessar um valor:
– a = v[9];

3
Referências a elementos do vetor
int v[10];

0
v[5]=10; //sexto elemento do vetor
1
2 printf (“%d”,v[5]);
3
4 V[6] = v[5]+ 20;
5 10
6
7
8
9

4
#include<stdio.h>
#include<stdlib.h>
main(){
int x[10]; // declaracao do vetor
int a;

x [0]= 1; // referencia ao vetor


x [1]= 2;
x [2]= 3;
x [3]= 4;
x [4]= 5; // referencia ao vetor
x [5]= 6;
x [6]= 7;
x [7]= 8;
x [8]= 9;
x [9]= 10;

for (a=0; a <=9; a++) // exibe o vetor


printf("%3d ",x[a]);
printf("\n\n");

for (a=9; a>= 0; a--) // exibe o vetor de trás para diante


printf("%3d ",x[a]);
printf("\n\n");

system("pause");
} 5
Quando usar?
Calcular a média da nota de 5 alunos e verificar quantos
conseguiram nota acima da média:
#include <stdio.h>
inteiro: cont; #include <stdlib.h>
real: media, num, soma=0; main()
para (cont=0;cont<5;cont++) {
receber num int contA=0;
double media, n1, n2, n3, n4, n5;
soma = soma + num scanf ("%lf %lf %lf %lf %lf",
media = soma/cont &n1, &n2, &n3, &n4, &n5);
media = (n1+ n2 + n3 + n4 + n5)/5;
if (n1>media) contA=contA+1;
if (n2>media) contA=contA+1;
if (n3>media) contA=contA+1;
Como verificar se a nota if (n4>media) contA=contA+1;
de cada aluno é maior if (n5>media) contA=contA+1;
que a média?? printf ("%lf %d", media, contA);
system("pause");
}

6
#include <stdio.h>
#include <stdio.h> #include <stdlib.h>
#include <stdlib.h> #define NUMAL 5
main() main()
{ {
int contA=0; int i, contA=0;
double media, n1, n2, n3, n4, n5; double soma=0, media;
scanf ("%lf %lf %lf %lf %lf", double v[NUMAL];
&n1, &n2, &n3, &n4, &n5);
for (i=0;i<NUMAL;i++) {
media = (n1+ n2 + n3 + n4 + n5)/5;
scanf ("%lf", &v[i]);
if (n1>media) contA=contA+1;
soma = soma + v[i];
if (n2>media) contA=contA+1;
}
if (n3>media) contA=contA+1; media = soma/i;
if (n4>media) contA=contA+1; for (i=0;i<NUMAL;i++) {
if (n5>media) contA=contA+1; if (v[i]>media) contA=contA+1;
printf ("%lf %d", media, contA); }
system("pause"); printf ("%lf %d\n", media, contA);
} system("PAUSE");
}

7
1. Armazenar 10 valores inteiros num vetor de 10 posições e
mostrar os valores armazenados.
#include<stdio.h>
#include<stdlib.h>
#define QUANT 10
main(){
int vetor[QUANT], cont;
for (cont=0; cont<QUANT; cont++)
{
printf ("\nDigite um valor inteiro: ");
scanf ("%d", &vetor[cont]);
}
for (cont=0; cont<QUANT; cont++)
printf ("\nO valor armazenado na posicao %d eh %d\n",
cont, vetor[cont]);
system("pause");
}
8
1. Armazenar 10 valores inteiros num vetor de 10 posições e
mostrar os valores armazenados.
#include<stdio.h>
#include<stdlib.h>
#define QUANT 10
main(){
int vetor[QUANT], cont;
for (cont=0; cont<QUANT; cont++)
{
printf ("\nDigite um valor inteiro: ");
scanf ("%d", &vetor[cont]);
}
for (cont=0; cont<QUANT; cont++)
printf ("\nO valor armazenado na posicao %d eh %d\n",
cont, vetor[cont]);
system("pause");
}
9
2. Armazenar 10 valores inteiros num vetor de 10 posições. Após, leia o vetor
e mostre os valores armazenados, adicionando em 10 unidades quando
forem números positivos.
#include<stdio.h>
#include<stdlib.h>
#define QUANT 10

main(){
int vetor[QUANT], cont;
for (cont=0; cont<QUANT; cont++)
{
printf ("\nDigite um valor inteiro: ");
scanf ("%d", &vetor[cont]);
}
for (cont=0; cont<QUANT; cont++)
{
if (vetor[cont]>0)
printf ("\nO valor armazenado na posicao %d eh %d\n", cont, vetor[cont]+10);
else
printf ("\nO valor armazenado na posicao %d eh %d\n", cont, vetor[cont]);
}
system("pause");
}

10
3. Faça um algoritmo que leia 5 idades de 5 pessoas e escreva o número de
pessoas que são maiores de idade. Armazene as idades num vetor.

#include<stdio.h>
#include<stdlib.h>
#define QUANT 5
main(){
int pessoas[QUANT];
int i=0, numMaiorIdade=0;
while (i<QUANT)
{
printf ("\nDigite uma idade: ");
scanf ("%d", &pessoas[i]);
if (pessoas[i]>=18)
numMaiorIdade++;
i++;
}
printf ("\nO numero de pessoas com mais de 18 anos eh %d\n",
numMaiorIdade);
system("pause");
}
11
4. Faça um programa que armazene em um vetor de inteiros as quantidades
compradas de 5 produtos. Em outro vetor de reais, armazene o valor unitário
de cada produto. O programa deve, ao final, mostrar o valor total a ser pago
por cada produto. Considere que o índice do vetor corresponde ao código do
produto.
#include<stdio.h>
#include<stdlib.h>
#define NUMPROD 5
main(){
int quantidade[NUMPROD], i;
float precoUnitario[NUMPROD];
for (i=0; i<NUMPROD; i++)
{
printf ("\nDigite a qtidade comprada do produto %d ", i);
scanf ("%d", &quantidade[i]);
printf ("\nDigite o preco unitario do produto %d ", i);
scanf ("%f", &precoUnitario[i]);
}
for (i=0; i<NUMPROD; i++)
printf ("\nO valor total do produto %d eh %.2f\n", i,
quantidade[i]*precoUnitario[i]);
system("pause");
} 12
Classificação
Colocar em ordem os elementos de um vetor
Tipo: - crescente
- decrescente

Existem vários algoritmos

Mais simples é o da troca.


O vetor é varrido de ponta a ponta e se um elemento está fora de
ordem ele é trocado com o elemento anterior.
O processo se repete até não haverem mais trocas.

13
Classificação
Para trocar dois elementos x e y:

x = y;
y = x; // não dá porque x já tem o valor de y

Correto:
temp =x;
x = y;
y = temp;

14
Classificação
#include<stdio.h>
#include<stdlib.h>
main(){
int x[10]; // declaracao do vetor
int a,s,troca;

x [0]= 6; // referencia ao vetor


x [1]= 5;
x [2]= 3;
x [3]= -90;
x [4]= 12; // referencia ao vetor
x [5]= 4;
x [6]= 7;
x [7]= 67;
x [8]= -12;
x [9]= 10;

for (a=0; a <10; a++)


printf("%3d ",x[a]);
printf("\n\n");

15
Classificação
troca = 1;
while (troca)
for (troca=a=0; a <10; a++)
if (x[a] > x[a+1]) {
s = x[a];
x[a] = x[a+1];
x[a+1] = s;
troca++; // houve uma troca
}

for (a=0; a <10; a++)


printf("%3d ",x[a]);
printf("\n\n");

system("pause");
}

16

Potrebbero piacerti anche