Questão simples mas que a solução pode surpreender

A primeira solução pensada para um problema normalmente não é a melhor. O enunciado a seguir mostra uma problema simples, mas que precisa ser devidamente analisado para encontrar a solução em sua totalidade e também de forma mais elegante.

====================================

Elabore um algoritmo em linguagem C que determine e mostre a soma dos números inteiros ímpares múltiplos de 3 em um intervalo entre zero e um número informado pelo usuário.

Por exemplo, do número zero até o número 10, os números ímpares e que também são múltiplos de 3 são os números 3 e 9 e cujo a soma dos dois valores resulta em 12.

====================================

Um primeiro pensamento para resolver essa questão normalmente envolve pegar cada valor do intervalo entre zero e o número informado e testar se ele é ímpar (seu resto da divisão pelo número dois é igual a um), ou se ele é múltiplo de três (seu resto da divisão pelo número 3 é igual a zero). O trecho de código a seguir implementa esse raciocínio.

Um pequeno detalhe e que, embora terá pouco impacto no custo computacional, acho importante comentar: por mais que o intervalo seja entre zero é um número informado, o primeiro valor que será ímpar e múltiplo de três é o número três e por isso não é necessário inicializar a variável de controle do laço for com zero, sendo melhor fazer a inicialização com o valor três, ou seja, for (i = 3; i <= num; i++).

Um aspecto realmente significativo na solução e que terá um impacto mais significativo no custo computacional é que existe um incremento fixo entre os valores que obedecem as duas condições apresentadas no problema. Observe que os valores 3, 9, 15, 21, 27 (todos ímpares e múltiplos de três) possuem uma diferença de 6 unidades com relação ao seu sucessor. A codificação dessa solução é mostrada no código abaixo.

É importante também perceber no enunciado desta questão que ele não restringiu apenas para o intervalo de números positivos. Supondo que seja fornecido o número -10, então deve ser considerado os números negativos no intervalo decrescente entre zero e dez negativo.

Teste o código em https://ideone.com/gYWRUF

Fica evidente que, se a pessoa não considerar a possibilidade de entrada de um número negativo, sua solução não estará completa. A solução também mostra que, se o programador pensar melhor em sua solução , o algoritmo desenvolvido pode reduzir seu custo computacional.

Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.