Baixe o app para aproveitar ainda mais
Prévia do material em texto
ECT1203 Linguagem de Programação Prof. Luiz Eduardo Cunha Leite Aula 09 – 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 >> 17; 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; } Problemas semelhantes na ciência e engenharia • Redes de sensores • Processamento de sinais • Matemática (vetores) • Controlar múltiplos programas • Conjunto de informações 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 referenciada 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 variável vetor Organização da Memória do Computador 01 02 03 04 05 ... 01 02 03 04 05 ... Declaração de vetores float dados[40]; tipo nome[número de elementos]; Declaração de um vetor chamado dados para guardar 40 números reais O valor que dimensiona o vetor deve ser uma constante inteira. Acessando os elementos de um vetor • Para acessar o elemento de um vetor, devemos especificar a sua posição: dados[8] • A posição do vetor é determinada por meio de um 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 5 6 7 8 37 38 39 6.5 7,8 5.3 dados 9.8 9.1 4.7 7,8 7.8 3.6 2.4 9.8 1.5 2.8 4.6 ... Atribuindo valores dados[2] = 2.9; cin >> dados[2]; O índice do primeiro elemento de um vetor é zero. float dados[40]; tamanho do vetor dados[2] = 2.9; índice do elemento dados[2] = dados[0] + dados[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 só é capaz de armazenar UMA informação por vez. • Os vetores, porém, armazenam diversas informações. • Comandos de repetição podem ser utilizados para armazenar informações em um vetor? int i, dados[3]; for (i=0 ; i<3 ; i++){ cin >> dados[i]; } 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 Faça um programa que receba do usuário dois vetores com n (n <= 50) componentes cada um, calcular e imprimir a soma deles. Exercício 2 Faça um programa que receba do usuário um vetor com n (n <= 20) números e informe se existe algum elemento repetido no mesmo. Se não forem encontrados números repetidos, a mensagem “Sem repetições” deve ser exibida. Exercício 3 Faça um programa que receba do usuário 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üênciade 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