Manipulando vetores

Teoria Completa

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Para termos chegado até aqui significa que nós já sabemos como criar vetores, mas até então eles estão vazios (na verdade eles possuem o que chamamos de lixo de memória).

No tópico de hoje nós vamos entender como manipular vetores e o motivo que faz a utilização deles tão interessante em alguns casos, então vamos nessa!

Inserindo elementos em um vetor

Para atribuirmos valores a um vetor, precisamos conhecer os índices presentes nele. A utilização de índices é uma forma de definir uma posição única aos vários elementos que um vetor pode possuir.

Com essa explicação ficou mamão com açúcar, fala sério!?

Para facilitar ainda mais, dá uma olhadinha nesse vetor:

Nós sabemos que ele possui tamanho 5 e está preenchido com 5 elementos, mas como eu faria para acessar apenas o elemento “C”?

É muito simples, os número menores que estão em azul representam os índices, todo índice de um vetor na linguagem C se inicia em 0 e vai até n - 1 , onde n é o tamanho do vetor.

Dessa forma, retornando a pergunta, para acessar o elemento “C” basta eu conhecer o seu índice, que nesse exemplo é 2, ou seja, o 3º elemento do vetor.

Mas com um vetor preenchido assim é moleza! Quero ver como nós preenchemos um vetor vazio.

Para ser sincero isso também é muito simples, depois de criar o vetor nós só precisamos conhecer o índice que desejamos preencher e o elemento (do mesmo tipo do vetor) que será armazenado.

Olha a figura a seguir:

Prontinho, acabamos de criar exatamente o mesmo vetor que foi utilizado para explicar os índices (considerando que aquele vetor se chama letras).

De maneira geral, a inserção de elementos em um vetor é feita da seguinte forma:

Molezinha, né?

Acessando elementos em um vetor

Você se lembra que utilizamos o acesso aos elementos de um vetor para explicar como os índices funcionam?

Vamos relembrar aquela explicação mudando algumas coisas, em especial o vetor que será utilizado:

Nós já sabemos recriar o vetor ilustrado pela imagem através de código na linguagem C, pois sabemos criar e preencher um vetor e é justamente isso que iremos fazer agora:

Tá, mas para que fizemos tudo isso?

Simplesmente para entendermos que o acesso a um elemento em um vetor é feito apenas conhecendo o índice que esse mesmo elemento está.

Então, se por algum motivo quiséssemos imprimir o elemento que está no índice 2 do vetor numeros teríamos que fazer isso:

De maneira geral, o acesso a um elemento presente em um determinado vetor é feito da seguinte forma:

Operações com vetores

Apesar de ter uma notação diferente, manipular um elemento específico de um vetor não é muito diferente de manipular uma variável, pois podemos fazer exatamente as mesmas coisas, como por exemplo:

Imagino que já deu para entender que não existem limitações quando relacionamos manipular um elemento específico de um determinado vetor a uma variável.

Agora que nos tornamos pancadões na manipulação de vetores está na hora de resolvermos alguns exercícios de fixação, você não acha?

Vamos exercitar o cérebro para ir bem em qualquer prova de programação da faculdade, te encontro na página aqui do ladinho.

Expandir

Exercício Resolvido #1

Universidade Federal de São Carlos – UFSCar, Introdução à Programação – Vetores, Tiago A. Almeida e Tiemi C. Sakata, 03/06/2018, pp. 02 – Adaptação do exercício 02.

Faça um programa que, dados 1 ≤ n ≤ 100 inteiros menores que 10 8 , imprima a média dos elementos e todos os números maiores que a média.

A entrada é composta por um número n (quantidade de elementos) seguida de n inteiros. Já a saída é composta de duas linhas, uma contendo a média dos elementos e a outra contendo todos os valores maiores que a média.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Vamos começar definindo o escopo do nosso programa.

Passo 2

Com o escopo definido, podemos declarar as variáveis e possíveis constantes que nos ajudarão no desenvolvimento desse programa.

A seguir nós temos algumas informações sobre as variáveis, vetores e constantes que estão presentes nesse programa:

  • MAX é uma constante que armazena o valor 10 8 ;
  • numeros é um vetor do tipo int com 10 8 posições;
  • i é uma variável contadora;
  • n é a variável responsável por armazenar a quantidade de elementos que serão inseridos pelo usuário;
  • somatorio é a variável responsável por armazenar a soma de todos os elementos presentes no vetor numeros;
  • media é a variável responsável por armazenar a média aritmética de todos os elementos presentes no vetor numeros.

Passo 3

Com isso, nós já podemos requisitar todas as entradas do programa ao usuário.

Essas entradas são: o número n de elementos seguido dos n elementos que preencherão o vetor numeros.

Passo 4

Com o vetor numeros devidamente preenchido, podemos iniciar o cálculo da média aritmética.

A lógica desse cálculo consiste em utilizar um laço de repetição (nesse caso o for) para percorrer todas as posições do vetor numeros, a cada loop a variável somatorio irá ser incrementada com o dado da posição do vetor sendo processada naquele momento, isso irá acontecer até que o vetor tenha sido totalemtne percorrido. Ao sair da estrutura de repetição, uma divisão entre o valor armazenado por somatorio e n deve ser realizada para que a média aritmética de todos os elementos do vetor numeros possa ser obtida.

Passo 5

Com a média calculada, basta realizarmos a impressão dela e em seguida percorrermos novamente o vetor numeros. Porém, dessa vez verificaremos a cada loop se o dado presente naquela posição do vetor é ou não maior que a média anteriormente calculada, caso seja esse dado deve ser impresso na tela.

Dessa forma, teremos ao final do programa duas linhas impressas. A primeira, consiste no valor da média aritmética dos elementos de numeros com duas casas decimais. Já a segunda se trata da impressão de todos os números maiores que a média presentes em numeros, esses separados por um espaço em branco.

Resposta

Exercício Resolvido #2

Universidade Estadual de Santa Cruz, Linguagem de Programação I – Exercícios sobre vetores, Esbel Tomás Valero Orellana, pp. 01 – Adaptação do exercício 02.

Escreva um programa que leia dois vetores de 10 posições e faça a soma dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

A primeira coisa que nós devemos fazer é definir o escopo do nosso programa.

Passo 2

Com o escopo definido, nós podemos iniciar a declaração dos vetores e variáveis que serão úteis para o desenvolvimento.

A seguir estão algumas informações sobre os vetores e variáveis:

  • a é um vetor de 10 posições que armazena os primeiros operandos das somas;
  • b é um vetor de 10 posições que armazena os segundos operandos das somas;
  • resultado é um vetor de 10 posições que armazena os resultados das somas entre os valores armazenados por a e b em seus respectivos índices.

Passo 3

Com os vetores declarados, podemos requisitar o preenchimento deles ao usuário.

Passo 4

Com os vetores dos operandos preenchidos, nós podemos agora preencher o vetor de resultados com a soma dos dados presentes em a e b em seus respectivos índices.

Passo 5

Por fim, nós podemos percorrer o vetor resultado para imprimir os resultados obtidos através da soma entre as dez posições de a e b.

Essa impressão terá os resultados separados por um espaço em branco.

Resposta

Exercício Resolvido #3

Universidade Estadual de Santa Cruz, Linguagem de Programação I – Exercícios sobre vetores, Esbel Tomás Valero Orellana, pp. 01 – Adaptação do exercício 06.

Escreva um programa que leia um vetor de tamanho 100 e informe o somatório dos elementos de índice par e o produto dos elementos de índice ímpar.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Como a grande maioria das vezes, a primeira coisa que nós temos que fazer é definir o escopo do programa que iremos desenvolver.

Passo 2

Com o escopo definido, o próximo passo para o desenvolvimento do programa é a declaração do vetor e das variáveis que serão úteis.

As informações sobre o vetor e as variáveis estão disponíveis a seguir:

  • vetor possui 100 posições e armazena os números que participarão do somatório ou produto;
  • vetor se trata de um vetor (óbvio, né?!) de 100 posições e armazena os números que participarão do somatório ou produto;
  • i é uma variável contadora;
  • somatorio é a variável responsável por armazenar a soma de todos os elementos pares de vetor;
  • produto é a variável responsável por armazenar a multiplicação de todos os elementos ímpares de vetor.

Passo 3

Com o vetor e as variáveis devidamente declaradas, podemos requisitar ao usuário do programa o preenchimento do vetor (declarado no programa como vetor).

Passo 4

Com o vetor preenchido, podemos iniciar o somatório dos números pares e o produto dos números ímpares.

A lógica consiste em percorrer vetor inteiramente verificando a cada posição se o dado processado naquele loop é ou não um número par. Caso seja, a variável somatorio deve ser incrementada com o valor desse dado, caso contrário, esse dado deve ser multiplicado com o conteúdo da variável produto.

Passo 5

Para finalizar o programa basta realizarmos as impressões dos dados armazenados pelas variáveis somatorio e produto.

Essas impressões serão seguidas de uma quebra de linha cada.

Resposta

Exercício Resolvido #4

Universidade de São Paulo – USP, Introdução à Computação – Exercícios com vetores, Projeto MAC multimídia, 2005, Exercício 3.

Tentando descobrir se um dado era viciado, um dono de cassino honesto (risos) o lançou n vezes. Dados os n resultados dos lançamentos, determinar o número de ocorrências de cada face.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

O primeiro passo para desenvolver esse programa é: definir o escopo dele.

Passo 2

Com o escopo definido, podemos declarar o veto dado (e iniciar ele com 0) e as variáveis necessárias para o desenvolvimento do programa.

A seguir estão algumas informações sobre as variáveis:

  • dado é um vetor de 6 posições inicializado necessariamente com 0, pois seus índices estão atrelados com as faces de um dado. Ou seja, o dado armazenado em uma posição representa a quantidade de vezes que essa face (índice) caiu;
  • i é uma variável contadora de lançamentos;
  • n é uma variável que armazena a quantidade de lançamentos do suposto dado viciado;
  • face é uma variável que armazena a face que caiu em determinado lançamento i.

Passo 3

Com o vetor dado e as variáveis necessárias declaradas, podemos requisitar a entrada do programa ao usuário.

Essa entrada n nada mais é do que a quantidade de lançamentos do dado.

Passo 4

Tendo conhecimento da quantidade de lançamentos n devemos requisitar a face obtida no lançamento do dado n vezes.

Quando a face for lida pelo programa o índice atrelado a essa posição será incrementado em uma unidade.

Para simplificar, se a uma face m cair em um lançamento, a posição a ser incrementada deve ser m – 1. Isso acontece, pois o vetor é iniciado no índice 0 (que representa a face 1).

Passo 5

Para finalizar o programa nós temos que imprimir a quantidade de faces que foram obtidos em n lançamentos.

Da mesma forma que a atribuição ao vetor dado foi feita com m – 1, ao imprimir a face processada pelo laço for, devemos utilizar a operação contrária (m + 1) seguida do dado armazenado por essa posição.

Cada impressão é feita é seguida de uma quebra de linha.

Resposta

Exercício Resolvido #5

Universidade de São Paulo – USP, Introdução à Computação – Exercícios com vetores, Projeto MAC multimídia, 2005, Adaptação do exercício 8.

Dadas duas sequências com 5 números inteiros entre 0 e 9, interpretadas como dois números inteiros de 5 algarismos, calcular a sequência de números que representa a soma dos dois inteiros.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Para desenvolvermos um programa capaz de resolver esse problema, antes de tudo, devemos definir o escopo do programa.

Passo 2

Com o escopo definido, podemos declarar as variáveis necessárias e os vetores que nos auxiliarão.

A seguir estão listadas algumas informações sobre os vetores e as variáveis presentes no programa:

  • n1 é um vetor de 5 posições que armazena uma sequência de algarismos, interpretando assim o primeiro número da operação;
  • n2 é um vetor de 5 posições que armazena uma sequência de algarismos, interpretando assim o segundo número da operação;
  • resposta é um vetor de 6 posições (inicializadas com o valor 0) que armazena uma sequência de algarismos, interpretando o resultado da operação entre os números 1 e 2;
  • sobe é uma variável booleana representativa. Armazena o valor 1 quando a soma de dois algarismos é igual ou superior ao valor 10 e 0 quando a soma entre dois algarismos pode ser representada através de um único algarismo;
  • i é uma variável contadora utilizada para percorrer os vetores utilizados no programa.

Passo 3

Com os vetores e as variáveis devidamente declaradas, podemos requisitar ao usuário do programa o preenchimento dos vetores n1 e n2 com as sequências dos respectivos números.

Passo 4

Com os vetores preenchidos, podemos realizar a soma algarismo a algarismo de índices correspondentes dos vetores com o objetivo de obter a sequência de números que interpretam a resposta da operação de soma entre os números interpretados pelos vetores n1 e n2.