|
![]() |
||
Algorítimo
|
||
. Nós temos 754.120 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Olá. Estou querendo fazer um programa que pede ao usuário pra digitar um número de 4 dígitos e depois mostra todas as combinações possíveis que esses números podem fazer, mas eu não tenho nem idéia de como começar. Por exemplo: se o usuário digitar 1234, o programa tem que mostar 4321, 3421, 2431......e assim por diante. Alguém pode me dar uma dica de como começar?
|
|
|
|
|
|
#2 (permalink) |
|
Membro Senior
|
:arrow: vai poder exibir o mesmo digito??
:arrow: exemplo: 2222
__________________
Decoder Fernando H. Machine: PIII SO: [Win2000 - Fedora Core 5] :arrow: VOCÊ SERÁ ASSIMILADO sml0068 |
|
|
|
|
|
#3 (permalink) | |
|
Zumbi
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
pode repetir o mesmo numero? não é tão dificil assim, posso ajuda-lo a fazer, vc programa em alguma linguagem? |
|
|
|
|
|
|
#4 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Se o programa é suposto mostrar todas as combinações possíveis que os 4 números podem fazer, acho que pode sim repetir os dígitos. Eu sei o suficiente de C++ pra me virar. Você pode me ajudar?
|
|
|
|
|
|
#5 (permalink) | |
|
Super Participante
|
Citação:
__________________
Diogo David Lima Athlon XP1700+|Asus A7V8X-X|HD Samsung 40 Gb 7200 rpm|256 Mb DDR PC2100|32 Mb GF2 Mx400|Encore10/100|Monitor Samsung 17' 793DF|Gab. Satellite P4 200K 4 baias|Mouse Optico Bright 800dpi|Win XP Pro |Adsl 300 kbps|E. Digital-BrT| |
|
|
|
|
|
|
#6 (permalink) | |
|
Zumbi
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
|
|
|
|
|
|
|
#7 (permalink) | |
|
Zumbi
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
boa sugestão, pascal é facil de programar, e tem excelentes recursos para esse tipo de aplicação. |
|
|
|
|
|
|
#8 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Tem que ser em C++. O que eu queria era só a idéia de como fazer isso sacou, pq eu não sei como começar. A parte de escrever o código eu não tenho problema nenhum, pq como eu disse, eu sei o sufuciente de C++ pra me virar.
|
|
|
|
|
|
#9 (permalink) |
|
Membro Senior
|
seria algo assim velho:
Program Valores; Var A,B,C:Integer; Begin writeln ('Digite 3 Valores'); Read(A,B,C); if ((A<B) and (B<C))then Write('Essa é a ordem Correta ', A,B,C) else if ((A>B) and (B>C)) then Write('Essa é a ordem Correta ', C,B,A) else if ((A<C) and (C<B))then Write('Essa é a ordem Correta ', A,C,B) else if ((A>B) and (C>A))then write('Essa é a ordem Correta ', B,A,C) else if ((B>A) and (A>C)) then write('Essa é a ordem Correta ', C,A,B) else write ('Essa é a ordem Correta ', B,C,A); Readkey; End.
__________________
Eu Uso Windows e Gosto... |
|
|
|
|
|
#10 (permalink) |
|
Zumbi
|
Bem, se há um calculo pra fazer isso eu realmente não sei, mas já que são sempre 4 números, basta fazer assim:
VAR1 = Primeiro número VAR2 = Segundo Número Var3 = Terceiro número Var4 = Quarto número Mostrar VAR1 & VAR1 & VAR1 & VAR1 Mesma coisa com as outras depois... Mostrar Var1 & Var2 & Var3 & Var4 Monta todas as possibilidades e pronto! Flw!
__________________
FMC = Fábio Magalhães Catunda |
|
|
|
|
|
#11 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
É, mas como eu "armaria" o loop pra isso?
Código:
Esse que é o meu outro problema. Eu não tenho nem idéia de como armar o loop ![]() |
|
|
|
|
|
#12 (permalink) |
|
Zumbi
|
Fiz um em PHP5 :mrgreen: serve? lá no final tem um exemplo de como usar!
Código:
__________________
Salve! Ó terra dos altos coqueiros! De belezas soberbo estendal! Nova Roma dos bravos guerreiros Pernambuco, imortal, imortal! Linux User #262254 |
|
|
|
|
|
#13 (permalink) | |
|
Super Participante
|
Citação:
Por isso que amo esse fóruM! ![]() hehehe ![]()
__________________
Diogo David Lima Athlon XP1700+|Asus A7V8X-X|HD Samsung 40 Gb 7200 rpm|256 Mb DDR PC2100|32 Mb GF2 Mx400|Encore10/100|Monitor Samsung 17' 793DF|Gab. Satellite P4 200K 4 baias|Mouse Optico Bright 800dpi|Win XP Pro |Adsl 300 kbps|E. Digital-BrT| |
|
|
|
|
|
|
#14 (permalink) | |
|
Zumbi
|
Citação:
:wink:
__________________
Salve! Ó terra dos altos coqueiros! De belezas soberbo estendal! Nova Roma dos bravos guerreiros Pernambuco, imortal, imortal! Linux User #262254 |
|
|
|
|
|
|
#15 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Kleber, agradeço pela sua ajuda. O problema é que eu não sei PHP, então teria como você fazer um "pseudo code" pra mim?
|
|
|
|
|
|
#16 (permalink) | |
|
Zumbi
|
Citação:
Vc nào entendeu? Ficou ultra simples! FlW!
__________________
FMC = Fábio Magalhães Catunda |
|
|
|
|
|
|
#17 (permalink) |
|
Zumbi
|
O código tá simples mesmo!!!
Eu vo tentar explicar como eu fiz, pq o pseudo código naum vai ficar legal! primeiro eu fiz no papel, pra saber o número de arranjos possíveis! 4! = 4 x 3 x 2 x 1 = 24 arranjos possíveis sabendo disso, fui pra segunda parte: como fazer os arranjos? A única forma seria isolando os valores e concatená-los na ordem certa!! aqui tá um exemplo gerado pelo script que eu fiz: 1234 1243 1342 1324 1424 1434 2134 2143 2341 2314 2414 2434 3412 3421 3124 3142 3242 3212 4123 4132 4231 4213 4313 4323 Olhando aí pra cima, dá pra notar que eu isolei um número e fiz o arranjo com os outros 3! calculei os arranjos possíveis com 3 itens: 3! = 3 x 2 x 1 = 6 arranjos. A partir daqui eu vi que meu arranjo está dividido em 4 blocos de 6 arranjos. aí matei a charada! nos pontos onde há a troca de número isolado, eu chamei de ponto crítico!! no caso seria 1, 7, 13, 19. Antes de começar a escrever o código eu fiz so arranjos de um bloco do arranjo principal! são aquelas linhas que tem no código -> $this -> ready = $this -> dotStart bla bla blá a outra bronca que achei foi: como usar o loop pra alimentar meu array da forma correta? eu fiz um arranjo de 2 blocos do meu arranjo principal: 1234 1243 1342 1324 1424 1434 2134 2143 2341 2314 2414 2434 notei que havia um repetição! e seria bronca pequena organizar de vez meu for! lá onde tem pronto crítico é onde as variáveis mudam de valor! abaixo um exemplo de pseudo codigo dessa parte: if (($this -> counter == 0) or ($this -> counter == 6) or ($this -> counter == 12) or ($this -> counter == 18)) { $this -> ready = $this -> dotStart . $this -> dotFirst . $this -> dotSecond . $this -> dotThird; } se counter igual a 0 ou counter igual a 6 ou counter igual a 12 ou counter igual a 18 ready recebe dotStart concatenada com dotFirst concatenada com dotSecond concatenada com dotThird lá embaixo é jogado no final do array com a função array_push e assim vai o for todinho!! OBS: counter igual a 0 dotStart = $a counter igual a 6 dotStart = $b counter igual a 12 dotStart = $c counter igual a 18 dotStart = $d dotStart é o primeiro número dos blocos do arranjo principal! ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨¨¨¨¨¨¨¨ Eu não sou muito bom pra explicar mas se ainda tiver dúvida avisa aê!!
__________________
Salve! Ó terra dos altos coqueiros! De belezas soberbo estendal! Nova Roma dos bravos guerreiros Pernambuco, imortal, imortal! Linux User #262254 |
|
|
|
|
|
#18 (permalink) |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Kleber, dá uma olhada nessa página
http://www.wcrl.ars.usda.gov/cec/java/showcomb.htm Clica em "Repeatable", dai onde fala "Enter number of different objects", coloca 4, e onde fala "Enter size of groups that can be taken from objects", coloca 4 também, e dai clica em "Calculate all ways". Eu queria algo daquele jeito, só que com números ao invés de letras. Podendo repetir sacou? Eu to tentando olhar no código fonte daquela página pra ver como o cara fez aquilo, mas ta complicado. Mó bagunça. |
|
|
|
|
|
#19 (permalink) |
|
Zumbi
|
Ahh vc quer um arranjo com repetição no caso vai ficar 4 elevado a 4 = 256! eu olhei o exemplo que vc colocou no primeiro post e lá não havia repetição entaum achei que vc queria um arranjo simples!
é simples de fazer!! já que vc tá usando c++, eu acredito que vc saiba OOP, entaum: cria um classe comb por exemplo no método construtor vc seta os 4 valores cria um método(DoArray) pra montar um array com um arranjo 4,2 e concatena os valores. Vai dá 16 posições e retorna o array, exemplo(vou usar letras pq fica melhor de entender): AA AB AC AD BA BB BC BD . . . depois cria um método(DoComb) chama a função (DoArray), pega o return dela. agora vc faz um while ou for pra concatenar as posições do array, exemplo: [0].[0] // isso vai dá AAAA [0].[1] // isso vai dá AAAB [0].[2] // isso vai dá AAAC . . . [1].[0] // isso vai dá ABAA [1].[1] // isso vai dá ABAB . . . e por aí vai.... vai jogando dentro de outro array o resultado de cada concatenação e retorna esse array no fim da função! depois faz um método(ShowComb) e imprime o array retornado na função (DoComb). ps: eu tb num entendi nada daquele código em js :lol:
__________________
Salve! Ó terra dos altos coqueiros! De belezas soberbo estendal! Nova Roma dos bravos guerreiros Pernambuco, imortal, imortal! Linux User #262254 |
|
|
|
|
|
#20 (permalink) | |
|
Membro Senior
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0
![]() |
Kleber, eu não entendi essa parte:
Citação:
|
|
|
|
|
![]() |
| Opções do Tópico | |
|
|