Faça uma função que receba dois números inteiros positivos por parâmetro e retorne a soma dos N números inteiros existentes entre eles.
Passo 1
O enunciado pede uma função que receba dois inteiros positivos e retorne a soma dos inteiros existentes entre eles (excluindo os próprios parâmetros). O conteúdo aqui é soma de termos de uma progressão aritmética e uso de lógica para ordenação dos parâmetros.
Passo 2
Primeiro precisamos garantir que trabalhamos sempre com o menor e o maior valor. Seja
e
os parâmetros, definimos:
-
-
Assim evitamos erros quando o primeiro parâmetro for maior que o segundo.
Passo 3
Os números inteiros estritamente entre
e
formam uma progressão aritmética cujo primeiro termo é
, o último é
e o número de termos é
Passo 4
Para somar todos esses termos sem usar um laço explícito, aplicamos a fórmula da soma de progressão aritmética:
Passo 5
Basta então implementar a função seguindo esses passos. Se
(ou seja, os valores são consecutivos ou iguais), retornamos 0.
Segue a implementação em pseudocódigo estilo C:
Segue a implementação em pseudocódigo estilo C:
Resposta
int somaEntre(int a, int b) {
int menor = (a < b) ? a : b;
int maior = (a < b) ? b : a;
int N = maior - menor - 1;
if (N <= 0) return 0;
// soma de PA: N * (primeiro + último) / 2
int soma = N * (menor + maior) / 2;
return soma;
}
int menor = (a < b) ? a : b;
int maior = (a < b) ? b : a;
int N = maior - menor - 1;
if (N <= 0) return 0;
// soma de PA: N * (primeiro + último) / 2
int soma = N * (menor + maior) / 2;
return soma;
}