Vetores em c: Manipulação

Ver Todos os Exercícios

Teoria

Na linguagem C usamos vetores para armazenar inúmeros tipos de dados. Bora aprender como manipular vetores em C? 🤩

📢 Clique para ver mais:

Como Inserir Elemementos 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. Pra ficar mais claro, se liga nessa imagem:

Vetor: Exemplo
Vetor: Exemplo

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

É muito simples, os número menores que estão em azul representam os índices, todo índice de um vetor na linguagem se inicia em e vai até , onde é o tamanho do vetor. Dessa forma, retornando a pergunta, para acessar o elemento basta eu conhecer o seu índice, que nesse exemplo é , ou seja, o º elemento do vetor.

Se tivermos um vetor vazio precisamos primeiro criar o vetor, assim:

int main( )

{

char letras [5];

letras [0]=’A’;

letras [1]=’B’;

letras [2]=’C’;

letras [3]=’D’;

letras [4]=’E’;

return 0

}

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

int main( )

{

/*Nome*/[/Índice*/]=/* Elemento*/

return 0

}

Agora confere esse vídeo super completo que a gente preparou pra você sobre manipulação de vetores em C 👇

Como Acessar Elementos do Vetor

Para aprender como acessar elementos do vetor vamos criar um novo vetor:

Criando um novo vetor
Criando um novo vetor

Para isso seguimos o passo a passo que vimos ali em cima:

Criando um novo vetor: Código em c
Criando um novo vetor: Código em c

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:

Como acessar um elemento do vetor
Como acessar um elemento do vetor

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

int main( )

{

/*Nome*/[/Índice*/]

return 0

}

Como fazer 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:

int main( )

{

int numeros[4];

int X=0;

numeros [0]=70;

numeros [1]=95;

numeros [2]=48;

numeros [3]=76;

/*Impressão*/

printf(”%d”, numeros [2]);

/*Operações*/

X=numeros [1]+ numeros [2];

/*Condições*/

if(X

return 0

}

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 vamos praticar com exercícios?

Como Acessar Elementos do Vetor

Como fazer Operações com Vetores

Exercícios Resolvidos

Exercício Resolvido #1

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #2

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #3

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #4

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.

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

Ei, a resposta está no passo a passo :)

Exercício Resolvido #5

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.

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.

A lógica consiste em somar os algarismos da direita para a esquerda (assim como fazemos na matemática). Para isso é utilizado um laço de repetição for que inicializa a variável contadora i em 5 (última posição do vetor respostas).

A primeira instrução executada no laço consiste em verificar se sobe possui o valor 1. Começando pelo lado mais fácil, se essa condição não for verdadeira (sobe igual a 0), a posição 5 do vetor resposta será atribuída com a soma das últimas posições de n1 e n1.

Vale ressaltar que a subtração no índice dos vetores n1 e n2 ocorre pois eles só possuem 5 posições, enquanto o vetor resultado possui 6. Logo, a última posição de vetor é 5, mas as últimas posições de n1 e n2 são no índice 4 e como mencionado anteriormente a variável contadora i iniciado na última posição do vetor de 6 posições, por esse motivo a subtração deve ocorrer.

Além disso, uma verificação se o resultado da soma é maior ou igual que 10 é realizada, pois sobe deve receber o valor 1 e a posição sendo processada em resultado deverá armazenar apenas um algarismo (o último do que foi originado na soma).

Isso nada mais é na programação do que conhecemos na matemática básica como a propriedade do “sobe um”:

Por outro lado, se a verificação antes feita de sobe for verdadeira, ela será resetada (recebe o valor 0) e a soma realizada terá uma unidade adicionada, tendo o mesmo processo de verificação de “sobe um” realizado posteriormente.

Isso irá acontecer até que o laço de repetição chegue na operação dos primeiros algarismos de n1 e n2 (considerando que eles estão mais à esquerda).

Passo 5

Ao sair do laço de repetição uma última verificação de overflow (ou “sobe um”) é realizada, caso verdadeira, um algarismo é inserido na posição 0 de resultado (por isso ele deve ter uma posição a mais que os vetores originais). Caso contrário, nada acontece e a sequência de algarismos obtida como resultado é impressa.

Vale lembrar que a impressão da sequência é realizada com espaços em branco entre os algarismos.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #6

Faça um programa que preencha um vetor de 1.000 posições com números inteiros inseridos via teclado pelo usuário pelo usuário.

Passo 1

Para alguns isso pode parecer muito simples, mas é um conhecimento que compõe a base para a utilização de vetores na linguagem C. A operação de preencher consiste em utilizar uma estrutura de repetição que requisita uma entrada e incrementa uma unidade na variável contadora a cada loop.

Passo 2

A figura a seguir ilustra de forma simples como um vetor de 1.000 posições é preenchido:

Basicamente, a lógica por trás dessa operação está em utilizar uma estrutura de repetição com uma variável contadora iniciada em 0. A cada loop do laço, a posição do vetor que será processada é aquela armazenada pela variável i (contadora), essa posição também é responsável por armazenar o valor que será requisitado ao usuário.

Isso fará com que enquanto a condição de execução for verdadeira (nesse caso i menor que o tamanho do vetor) uma requisição de entrada seja feita, ou seja, um valor será pedido ao usuário para todas as posições do vetor até que ele tenha sido totalmente percorrido.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #7

Escreva um programa em C que lê 15 valores reais, encontra o maior e o menor deles e mostra o resultado.

Passo 1

Vamos para mais um exercício!

Como sempre, a primeira coisa que devemos fazer é definir o escopo do nosso programa.

Passo 2

Com o escopo definido, podemos pensar e declarar as variáveis que nos auxiliarão no desenvolvimento desse programa.

Informações:

  • numeros é o vetor que armazenará os valores reais inseridos pelo usuário;
  • maior e menor são as variáveis que armazenarão o maior e o menor número, respectivamente;
  • i será a variável contadora de um laço de repetição.

Passo 3

Com todas as variáveis declaradas, podemos requisitar a entrada dos 15 valores reais ao usuário. Dessa forma, utilizaremos o comando de repetição while para preencher o vetor numeros.

Passo 4

Com o vetor numeros preenchido, devemos realizar a identificação do maior e menor número. Para isso, iniciando pelo menor número, como não sabemos de fato qual é consideraremos a primeira posição do vetor numeros como aquela que contém o menor valor e inicializaremos a variável contadora i com 1 para iniciar a verificação a partir da segunda posição do vetor.

Como a variável menor está armazenando uma suposição, devemos novamente utilizar o comando de repetição while para percorrer todas as posições do vetor verificando se o valor da posição em questão é menor que o valor armazenado pela variável menor. Caso seja, menor recebe esse valor e a verificação continua a até o fim do vetor.

No final da execução do laço de repetição, temos a garantia de que a variável menor está de fato armazenando o menor valor dentre os 15 presentes no vetor. Esse tipo de busca é denominada linear, pois compara todas as posições do vetor.

Vale lembrar que ao final de cada loop a variável contadora i é incrementada em uma unidade.

Passo 5

Agora nós temos que encontrar o maior número, para ser sincero faremos praticamente a mesma coisa que fizemos no passo anterior.

Então, focando nas diferenças, para armazenar o maior valor utilizaremos a variável maior assim como faremos uma verificação de maior entre a posição de processamento do vetor números durante a execução do comando de repetição e o valor armazenado naquele momento pela variável maior.

Para exemplificar as coisas e entendermos melhor as mudanças, dá uma olhada em como ficou a verificação pelo maior número:

Passo 6

Por fim, nós só temos que realizar a impressão do valor armazenado pelas variáveis maior e menor:

Vale lembrar que para melhorar a visualização da saída podemos realizar a impressão dos valores com 2 casas decimais e adicionando quebras de linha.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #8

Desenvolva um programa que tenha como entrada a altura de 15 pessoas e imprima os seguintes cálculos:

  1. A menor altura do grupo;
  2. A maior altura do grupo.

Passo 1

Como sempre, a primeira coisa que devemos fazer nesse tipo de exercício é definir o escopo do programa.

Passo 2

Com o escopo definido, nós podemos declarar as variáveis que serão úteis para o desenvolvimento e execução do programa.

Vale lembrar que utilizaremos um vetor de 15 posições denominado alturas para armazenar as respectivas 15 alturas que serão dadas como entrada.

Além disso, essas são algumas informações sobre as variáveis que serão utilizadas:

  • menor armazenará o valor da menor altura digitada pelo usuário;
  • maior armazenará o valor da maior altura digitada pelo usuário;
  • i variável contadora das estruturas de repetição utilizadas pelo programa.

Passo 3

Nós também podemos utilizar o laço de repetição do while para realizar a requisição das 15 alturas esperadas para o usuário do programa.

Para que isso aconteça, utilizaremos a condição i menor que 15, uma vez que ela é inicializada com o valor 0 e incrementada a cada loop da estrutura de repetição.

Passo 4

Essa mesma estrutura de repetição será utilizada para a realização do cálculo de menor altura.

Onde a primeira coisa que devemos fazer é definir o valor 1 para a variável contadora i e supor que a menor altura é aquela que está na primeira posição do vetor alturas (atribuindo esse valor a variável menor).

Logo em seguida, efetivamente usaremos a estrutura do while para verificar se as posições seguintes do vetor (posteriores a posição 0) são menores que aquela definida como a menor, por esse motivo i assumiu o valor 1. Caso alguma delas seja, essa assumirá a sua posição na variável menor.

Vale ressaltar que a condição while para as instruções do é que a variável i seja menor que 15 (quantidade de alturas e posições no vetor), além disso a variável i é incrementada a cada loop da estrutura.

Passo 5

A lógico para encontrar a maior altura é muito parecido com aquela utilizada por nós no passo anterior.

A única diferença está presente apenas nas ações de verificação e atribuição do código anterior, que agora passam a ser de maior na variável maior, respectivamente.

Passo 6

Por fim, basta realizarmos a impressão dos resultados previamente calculados.

Essas impressões foram realizadas com duas casas decimais seguidas de uma quebra de linha cada.

Resposta

Ei, a resposta está no passo a passo :)