FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . 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.

Resposta
 
Opções do Tópico
Antigo 21-02-2004, 14:14   #1 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão Algorítimo

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?
kao00 está offline   Responder com Quote
Antigo 21-02-2004, 18:19   #2 (permalink)
Decoder
Membro Senior
 
Registrado em: Jun 2003
Localização: São Paulo / SP 05588-000
Mensagens: 365
Reputação: 18 Decoder está indo no caminho certo
Enviar mensagem via ICQ para Decoder
Padrão

: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
Decoder está offline   Responder com Quote
Antigo 21-02-2004, 19:57   #3 (permalink)
Jarod
Zumbi
 
Avatar de Jarod
 
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40 Jarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atenção
Padrão

Citação:
Postado Originalmente por Decoder
:arrow: vai poder exibir o mesmo digito??
:arrow: exemplo: 2222
´
pode repetir o mesmo numero? não é tão dificil assim, posso ajuda-lo a fazer, vc programa em alguma linguagem?
Jarod está offline   Responder com Quote
Antigo 21-02-2004, 20:13   #4 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

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?
kao00 está offline   Responder com Quote
Antigo 22-02-2004, 14:23   #5 (permalink)
diogodavidlima
Super Participante
 
Registrado em: Apr 2003
Localização: Joinville-SC
Mensagens: 829
Reputação: 19 diogodavidlima está indo no caminho certo
Enviar mensagem via ICQ para diogodavidlima
Padrão

Citação:
Postado Originalmente por kao00
Se o programa é suposto mostrar todas as combinações possíveis que os 4 números podem fazer, acho que pode sim repeti...
axo o pascal aconselhável para esse programa que você quer fazer..
__________________
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|
diogodavidlima está offline   Responder com Quote
Antigo 22-02-2004, 15:12   #6 (permalink)
Jarod
Zumbi
 
Avatar de Jarod
 
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40 Jarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atenção
Padrão

Citação:
Postado Originalmente por kao00
Se o programa é suposto mostrar todas as combinações possíveis que os 4 números podem fazer, acho que pode sim repeti...
posso sim... mas teria que ser nas horas vagas...
Jarod está offline   Responder com Quote
Antigo 22-02-2004, 15:13   #7 (permalink)
Jarod
Zumbi
 
Avatar de Jarod
 
Registrado em: Jun 2002
Mensagens: 6.937
Reputação: 40 Jarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atençãoJarod É esplêndido e chama muita atenção
Padrão

Citação:
Postado Originalmente por diogodavidlima
axo o pascal aconselhável para esse programa que você quer fazer..

boa sugestão, pascal é facil de programar, e tem excelentes recursos para esse tipo de aplicação.
Jarod está offline   Responder com Quote
Antigo 22-02-2004, 15:57   #8 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

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.
kao00 está offline   Responder com Quote
Antigo 22-02-2004, 18:54   #9 (permalink)
Trentin
Membro Senior
 
Registrado em: Jan 2004
Localização: Curitiba
Mensagens: 190
Reputação: 17 Trentin está indo no caminho certo
Enviar mensagem via MSN para Trentin
Padrão

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...
Trentin está offline   Responder com Quote
Antigo 23-02-2004, 3:51   #10 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 30 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

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
FMC está offline   Responder com Quote
Antigo 23-02-2004, 7:55   #11 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

É, mas como eu "armaria" o loop pra isso?
Código:
while(eu vou ali tomar um café) mostre todas as combinações;


Esse que é o meu outro problema. Eu não tenho nem idéia de como armar o loop
kao00 está offline   Responder com Quote
Antigo 23-02-2004, 13:43   #12 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 28 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

Fiz um em PHP5 :mrgreen: serve? lá no final tem um exemplo de como usar!

Código:
<?php class Comb { private $valueA = NULL; private $valueB = NULL; private $valueC = NULL; private $valueD = NULL; private $start = NULL; private $counter = NULL; private $dotStart = NULL; private $dotFirst = NULL; private $dotSecond = NULL; private $dotThird = NULL; private $ready = NULL; private $number = array(); public function __construct($a,$b,$c,$d){ $this -> valueA = $a; $this -> valueB = $b; $this -> valueC = $c; $this -> valueD = $d; } private function DoComb($valueA,$valueB,$valueC,$valueD){ $this -> dotStart = $this -> valueA; $this -> dotFirst = $this -> valueB; $this -> dotSecond = $this -> valueC; $this -> dotThird = $this -> valueD; for($this -> counter = 0;$this -> counter < 24;$this -> counter++){ // Ponto crítico if ($this -> counter == 6) { $this -> dotStart = $this -> valueB; $this -> dotFirst = $this -> valueA; $this -> dotSecond = $this -> valueC; $this -> dotThird = $this -> valueD; } // Ponto crítico if ($this -> counter == 12) { $this -> dotStart = $this -> valueC; $this -> dotFirst = $this -> valueD; $this -> dotSecond = $this -> valueA; $this -> dotThird = $this -> valueB; } // Ponto crítico if ($this -> counter == 18) { $this -> dotStart = $this -> valueD; $this -> dotFirst = $this -> valueA; $this -> dotSecond = $this -> valueB; $this -> dotThird = $this -> valueC; } 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; } if (($this -> counter == 1) or ($this -> counter == 7) or ($this -> counter == 13) or ($this -> counter == 19)) { $this -> ready = $this -> dotStart . $this -> dotFirst . $this -> dotThird . $this -> dotSecond; } if (($this -> counter == 2) or ($this -> counter == 8) or ($this -> counter == 14) or ($this -> counter == 20)) { $this -> ready = $this -> dotStart . $this -> dotSecond . $this -> dotThird . $this -> dotFirst; } if (($this -> counter == 3) or ($this -> counter == 9) or ($this -> counter == 15) or ($this -> counter == 21)) { $this -> ready = $this -> dotStart . $this -> dotSecond . $this -> dotFirst . $this -> dotThird; } if (($this -> counter == 4) or ($this -> counter == 10) or ($this -> counter == 16) or ($this -> counter == 22)) { $this -> ready = $this -> dotStart . $this -> dotThird . $this -> dotFirst . $this -> dotThird; } if (($this -> counter == 5) or ($this -> counter == 11) or ($this -> counter == 17) or ($this -> counter == 23)) { $this -> ready = $this -> dotStart . $this -> dotThird . $this -> dotSecond . $this -> dotThird; } array_push($this->number,$this->ready); } return $this -> number; } public function ShowComb(){ $this -> DoComb($this -> valueA,$this -> valueB,$this -> valueC,$this -> valueD); for($this -> counter = 0;$this -> counter < 24;$this -> counter++){ echo $this -> number[$this -> counter]."<br>"; } } } // exemplo de como usar $a = 1; $b = 2; $c = 3; $d = 4; $Funfando = new Comb($a,$b,$c,$d); $Funfando -> ShowComb(); ?>
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 23-02-2004, 13:48   #13 (permalink)
diogodavidlima
Super Participante
 
Registrado em: Apr 2003
Localização: Joinville-SC
Mensagens: 829
Reputação: 19 diogodavidlima está indo no caminho certo
Enviar mensagem via ICQ para diogodavidlima
Padrão

Citação:
Postado Originalmente por Kleber Costa
Fiz um em PHP5 :mrgreen: serve? lá no final tem um exemplo de como usar!

[code]
<?php

class Comb {
p...
clap clap clap!
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|
diogodavidlima está offline   Responder com Quote
Antigo 23-02-2004, 13:51   #14 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 28 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

Citação:
Postado Originalmente por diogodavidlima
clap clap clap!
Por isso que amo esse fóruM!
hehehe
:wink:
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 23-02-2004, 21:40   #15 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

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?
kao00 está offline   Responder com Quote
Antigo 23-02-2004, 23:47   #16 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 30 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

Citação:
Postado Originalmente por kao00
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?
O pseudo-código eu fiz, acho que o kleber seguiu baseado naquilo... mas ele fez completinho!

Vc nào entendeu? Ficou ultra simples!

FlW!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 24-02-2004, 10:39   #17 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 28 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

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
Kleber Costa está offline   Responder com Quote
Antigo 24-02-2004, 11:29   #18 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

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.
kao00 está offline   Responder com Quote
Antigo 24-02-2004, 16:00   #19 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 28 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

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
Kleber Costa está offline   Responder com Quote
Antigo 25-02-2004, 13:05   #20 (permalink)
kao00
Membro Senior
 
Registrado em: Jan 2004
Localização: Londrina - PR
Mensagens: 352
Reputação: 0 kao00 está indo no caminho certo
Padrão

Kleber, eu não entendi essa parte:
Citação:
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
Tem como explicar melhor?
kao00 está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 14:35.