Exercícios Resolvidos de Manipulando vetores

Ver Teoria

Enunciado

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 :)