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 a e b os parâmetros, definimos:
  • menor = min(a,b)
  • maior = max(a,b)
    Assim evitamos erros quando o primeiro parâmetro for maior que o segundo.

Passo 3

Os números inteiros estritamente entre menor e maior formam uma progressão aritmética cujo primeiro termo é menor+1, o último é maior-1 e o número de termos é
N = (maior-1) - (menor+1) + 1 = maior - menor - 1

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:
S = N cdot l( (menor+1) + (maior-1) r)2 = N cdot menor + maior2

Passo 5

Basta então implementar a função seguindo esses passos. Se N <= 0 (ou seja, os valores são consecutivos ou iguais), retornamos 0.
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;
}

Exercícios relacionados