• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

digital

Combinações de numeros inteiros

11 mensagens neste tópico

Bom dia

Estou a tentar resolver um proble em Visual Basic.Net, está quase pronto, mas nao consigo resolver esta questão.

Quem me poderia dar uma ajuda, não quero o trabalho feito mas pelo menos uma ajuda de como resolver esta questão.

Quero que o programa me devolva todas as combinações de soma de 3 numeros (nao repetidos), possiveis para determinado numero introduzido pelo utilizador, por exemplo: o utilizador introduz o numero 6, o VB deverá devolver (3+2+1) é a unica combinação possivel, mas se o utilizador  introduzir o 9 deverá devolver (4+3+2), (1+2+6),(5+3+1) a ordem dos numeros nao interessa e não há limite no numero que o utilizador pode introduzir.

desde já agradeço a ajuda possivel. Segundo o professor não existe qualquer função ou formula matematica para o resolver. A unica formula matematica será a soma inteiro=num1+num2+num3

o que me deixou ainda mais confusa.

Desde ja agradeço toda a ajuda possivel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui de facto não há muito a fazer senão um programa que experimente as combinações todas.

Repara que se tiveres num1 e num2 (para facilitar a vida é melhor colocar uma ordem à partida como "num1 < num2"), num3 = num - (num1+num2). Experimenta todas as hipoteses plausiveis para num1 e num2 e verifica se o num3 é maior que o num2. Se for, tens uma das soluções.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigada pela ajuda mogers, vou fazer isso black-Day.

Mais alguma sugestão?

Criei um contador para num1, num2, num3 para que vá incrementando até que num1 num2 + num3 seja = inteiro

à partida deverá ser por aqui, o problema é que conhecemos o inteiro (já que o utilizador o introduz), mas como ter os outros numeros a partir deste?????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:hmm: um quebra-cabeças...

Vou procurar a soluçao, depois escrevo...

:hmm: contador.... :hmm: num1... :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já colocaste a mesma pergunta no tópico de VB, aqui e em Matemática. Isso é extremamente errado! Antes de perguntar devias identificar qual é a secção certa e fazer apenas um post.

Pelo que disse anteriormente, dois contadores chegam. Não precisas de 3.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

;) desculpa mas sou nova neste forum e tambem em programação e ainda não me é facil identificar o real problema, por isso fui seguindo as sugestões me foram sendo dadas e coloquei o mesmo post em varias secções.

Não voltará a acontecer, mais uma vez as minhas desculpas a todos os utilizadores do forum  :dontgetit: nao foi por mal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma idéria é teres um ciclo entre 1 e n e para cada iteração gerares as somas de dois números.

Exemplo com 9:

1:

2:

3: 1+2+6

4: 1+3+5

5: 2+3+4

6:

7:

8:

9:

Acho que dá para perceber a ideia. Tens de verificar se a sequência já existe (ou podes descartá-las no fim) e verificar se há números repetidos.

Além disto, acho que ainda dá para fazer umas optimizações.

EDIT: Podes começar a contar a partir de 3, já que com 1 não podes ter uma soma de dois números e com 2 a única hipótese é 1+1.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que estão todos a complicar demasiado, sigam a ideia que o mogers deu e resolvem o problema em 3 linhas.

Para cada par de dois números (uma vez que não queres somas repetidas, basta garantir que o primeiro é menor ou igual ao segundo para não as criares).

De seguida, para cada um destes pares de números, para a soma dar K o terceiro terá que ser obrigatoriamente num3 = K - (num1+num2)

Se num3 for maior ou igual a num2, encontraste uma soma nova. Caso contrário, é uma soma repetida.

Simples, eficaz, e pequenino.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que da pra fazer assim

entrada = x  a=1  b=2

z=x-3

(z,a,B)

(z-1,a,b+1)

.....

...

.... (Z-k,a,b+k) até que z-k seja igual b+K entendeu????

daí (z-2,a+2,B)

...

..

(z-k,a+k,B) até  até que z-k seja igual a+K entendeu????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora