Baixe o app para aproveitar ainda mais
Prévia do material em texto
ECT1203 Linguagem de Programação 2014.2 Prof. Caroline Rocha Aula 19– Vetores Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Hora de silenciar o celular • Manter o celular sempre desligado/silencioso quando estiver em sala de aula • Nunca atender o celular em sala de aula int main(){ float n1, n2, n3, n4, media; cout << "Entre com a nota 1: "; cin >> n1; cout << "Entre com a nota 2: "; cin >> n2; cout << "Entre com a nota 3: "; cin >> n3; cout << "Entre com a nota 4: "; cin >> n4; media = (n1 + n2 + n3 + n4)/4; cout << "Media: " << media << endl; return 0; } int main(){ float n1, n2, n3, n4, n5, n6, n7, n8, n9, n10; float n11, n12, n13, n14, n15, n16, n17, n18; float n19, n20, n21, n22, n23, n24, n25, media; cout << "Entre com a nota 1: "; cin >> n1; cout << "Entre com a nota 2: "; cin >> n2; cout << "Entre com a nota 3: "; cin >> n3; cout << "Entre com a nota 4: "; cin >> n4; cout << "Entre com a nota 5: "; cin >> n5; cout << "Entre com a nota 6: "; cin >> n6; cout << "Entre com a nota 7: "; cin >> n7; cout << "Entre com a nota 8: "; cin >> n8; cout << "Entre com a nota 9: "; cin >> n9; cout << "Entre com a nota 10: "; cin >> n10; cout << "Entre com a nota 11: "; cin >> n11; cout << "Entre com a nota 12: "; cin >> n12; cout << "Entre com a nota 13: "; cin >> n13; ... cout << "Entre com a nota 14: "; cin >> n14; cout << "Entre com a nota 15: "; cin >> n15; cout << "Entre com a nota 16: "; cin >> n16; cout << "Entre com a nota 17: "; cin >> n17; cout << "Entre com a nota 18: "; cin >> n18; cout << "Entre com a nota 19: "; cin >> n19; cout << "Entre com a nota 20: "; cin >> n20; cout << "Entre com a nota 21: "; cin >> n21; cout << "Entre com a nota 22: "; cin >> n22; cout << "Entre com a nota 23: "; cin >> n23; cout << "Entre com a nota 24: "; cin >> n24; cout << "Entre com a nota 25: "; cin >> n25; media = (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11 +n12+n13+n14+n15+n16+n17+n18+n19+n20 +n21+n22+n23+n24+n25)/25; cout << "Media: " << media << endl; return 0; } Resolvendo o problema com vetores int main() { float notas[25], media; int i; for(i=0;i<25;i++) { cout << "Entre com a nota "<< i+1 <<": "; cin >> notas[i]; } media = 0; for(i=0;i<25;i++) { media = media + notas[i]; } media = media/25; cout << "Media: "<< media << endl; return 0; } Objetivo da aula Apresentar vetores em C++: Motivação para utilização de vetores Declaração de vetores Exemplos de utilização de vetores Vetor • Coleção de variáveis do mesmo tipo referenciadas por um nome comum • Matriz unidimensional • Também chamado de Array ou Lista • Os elementos de um vetor são armazenados em posições contíguas na memória • Cada elemento é acessado por meio de um índice Declaração de vetores float notas[40]; tipo nome[número de elementos]; O valor que dimensiona o vetor deve ser uma constante inteira. Declaração de um vetor chamado notas para guardar 40 números reais: Acessando os elementos de um vetor notas[4] • Para acessar o elemento de um vetor, devemos especificar a sua posição. • A posição do vetor é dada pelo número inteiro entre colchetes: uma constante, uma expressão aritmética ou uma variável entre colchetes. • Também chamada de índice. 0 1 2 3 4 37 38 39 notas 2.4 Índices: 9.6 0.3 7.1 5.5 4.2 8.7 8.0 … Atribuindo valores notas[2] = 2.9; cin >> notas[i]; O índice do primeiro elemento de um vetor é zero. float dados[40]; tamanho do vetor dados[2] = 2.9; índice do elemento notas[2] = notas[0] + notas[1]; Exercício Considere o vetor v a seguir e as variáveis x=3 e y=2. Escreva o valor correspondente às solicitações abaixo: 0 1 2 3 4 5 6 7 8 9 10 11 6 7,8 5 v 4 2 4 7,8 5 3 2 2 1 2 6 (a) v[x+1] (b) v[x+2] (c) v[x+3] (d) v[x+4] (e) v[x*1] (f) v[x*2] (g) v[x*3] (h) v[v[x+4]] (i) v[x+y] (j) v[8-v[2]] (k) v[v[4]] (l) v[v[v[7]]] (m) v[v[1]*v[4]] (n) v[x+4] Quanto espaço um vetor ocupa? Total de bytes = sizeof(tipo) * tamanho do vetor char s[10]; total_de_bytes = sizeof(char)*10; total_de_bytes = sizeof(s); int x[4]; total_de_bytes = sizeof(int)*4; total_de_bytes = sizeof(x); Vetores e as estruturas de repetição • O comando de atribuição é capaz de armazenar somente UMA informação por vez. • Os vetores, porém, armazenam diversas informações. • Como armazenar informações em um vetor de maneira automática? int i, dados[5]; for (i=0; i<5; i++){ cin >> dados[i]; } Usando estruturas de repetição! Qual o erro deste programa? int main() { float notas[10], media; int i; for(i=1; i<=10; i++) { cout << "Entre com a nota " << i << ": "; cin >> notas[i]; } media = 0; for(i=1; i<=10; i++) { media = media + notas[i]; } media = media/10; cout << "Media: " << media << endl; return 0; } Resposta: 1. O índice do primeiro elemento é zero. 2. O vetor tem tamanho 10, portanto não existe elemento de índice 10. A linguagem C++ não realiza verificação de limites de vetores. Acesso a posições inválidas pode sobrepor dados da memória! Inicializando vetores //Programa que calcula o total de dias transcorridos no ano int main() { int dmes[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int dia, mes, ano; char ch; cout << "Digite a data (DD/MM/AAAA): "; cin >> dia >> ch >> mes >> ch >> ano; mes--; if(ano%4==0 && ano%100!=0 || ano%400==0) dmes[1] = 29; int total = dia; for(int i=0; i<mes; i++) total += dmes[i]; cout << "Total de dias transcorridos: "<< total << endl; return 0; } Inicializando vetores float notas[3]; notas = {4.5, 7.0, 8.2}; Exercício 1 Dados dois vetores com n (n <= 50) componentes cada um, calcular e imprimir a soma deles. Exercício 2 Leia um conjunto com n (n <= 20) números e informe se existe algum elemento repetido no conjunto. Exercício 3 Leia n (n <= 30) números quaisquer e imprima-os sem repetições. Exemplo: Entrada: 1,1,3,4,3,5,-8 Saída: 1,3,4,5,-8 Exercício 4 Dadas duas seqüências com n (n <= 100) números inteiros entre 0 e 9, interpretadas como dois números inteiros de n algarismos, calcular a seqüência de números que representa a soma dos dois inteiros. Exemplo: n = 8 1ª seqüência 8 2 4 3 4 2 5 1 2ª seqüência + 3 3 7 5 2 3 3 7 = 1 1 6 1 8 6 5 8 8 Exercício 5 Faça um programa para imprimir as n (n <= 100) primeiras linhas do triângulo de Pascal usando apenas um vetor, com o valor de n fornecido pelo usuário. Triângulo de Pascal para n = 6: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
Compartilhar