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