Ir para conteúdo
Fórum Script Brasil
  • 0

ordenação


Joelson Silva

Pergunta

Olá pessoal 

Estou precisando de uma ajuda no código abaixo, estou fazendo exercício sobre a loteria, o que é para fazer,

Dentro de um universo de numero no nosso caso eu escolhi 8 dezenas combinadas de 5 em 5, eu tenho que encontrar todas as sequencias de 3 ou seja 3 acerto iguais.

exemplo, 123,124,125,126,127 até ultima 678.

mais tem algum erro no código porque tem volantes se repetindo números a mais, veja no volantes 1 e volantes 3, ele repete 4 números iguais, o mesmo acontece para outro caso volantes 2=: 1 2 3 6 7 e volantes 5=: 1 2 5 6 7.

segue o código abaixo para uma correção.

Agradeço quem pode dar uma luz.

obrigado.

volantes 1=: 1 2 3 4 5
volantes 2=: 1 2 3 6 7
volantes 3=: 1 2 4 5 6
volantes 4=: 1 2 4 7 8
volantes 5=: 1 2 5 6 7
volantes 6=: 1 3 4 5 6
volantes 7=: 1 3 4 7 8
volantes 8=: 1 3 5 6 7
volantes 9=: 1 4 5 6 8
volantes 10=: 2 3 4 5 6
volantes 11=: 2 3 4 7 8
volantes 12=: 2 3 5 6 7
volantes 13=: 2 4 5 6 8
volantes 14=: 3 4 5 6 7
reduzidos: 14
total gerados: 56
 

algoritmo "loteria"

var
vetA: vetor[1..5]de inteiro
vetB: vetor[1..5]de inteiro


num,i,j,iguais,d,x,a,cont,total:inteiro
n1,n2,n3,n4,n5:inteiro
inicio
// Seção de Comandos

escreva("informe numero:")
leia(num)

para n1 de 1 ate num faca
vetA[1]:= n1
para n2 de n1+1 ate num faca
vetA[2]:= n2
para n3 de n2+1 ate num faca
vetA[3]:= n3
para n4 de n3+1 ate num faca
vetA[4]:= n4
para n5 de n4+1 ate num faca
vetA[5]:= n5

total:= total + 1


 para i de 1 ate 5 faca
  para j de 1 ate 5 faca
   se(vetA = vetB[j])então
      iguais:=iguais + 1
   fimse
  fimpara
  fimpara

   se(iguais = 3)ou(iguais = 0)então
     para x de 1 ate 5 faca
      vetB[x]:= vetA[x]
     fimpara
     a:=a + 1
     escrevaL("volantes",a,"=:",vetA[1],vetA[2],vetA[3],vetA[4],vetA[5])
     cont:=cont + 1
   fimse


 //************************************
 x:=0
 iguais:=0

fimpara
fimpara
fimpara
fimpara
fimpara
escreval("reduzidos:", cont)
escreval("total gerados:", total)
fimalgoritmo

Editado por Joelson Silva
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Tenta assim

 

algoritmo "loteria"

var
vetA: vetor[1..5]de inteiro
vetores: vetor[1..999,1..5]de inteiro
num,x,t,i,j,iguais,cont,total:inteiro
n1,n2,n3,n4,n5:inteiro

inicio
// Seção de Comandos
    escreva("informe numero:")
    leia(num)

    para n1 de 1 ate num faca
        vetA[1]:= n1
        para n2 de n1+1 ate num faca
            vetA[2]:= n2
            para n3 de n2+1 ate num faca
                vetA[3]:= n3
                para n4 de n3+1 ate num faca
                    vetA[4]:= n4
                    para n5 de n4+1 ate num faca
                        vetA[5]:= n5

                        total:= total + 1

                        para t de 1 ate cont faca
                            iguais:=0
                            para i de 1 ate 5 faca
                                para j de 1 ate 5 faca
                                    se(vetA[i] = vetores[t,j])então
                                        iguais:=iguais + 1
                                    fimse
                                fimpara
                            fimpara
                            se(iguais >= 4)então
                                interrompa
                            fimse
                        fimpara

                        se(iguais < 4)então
                            cont:=cont + 1
                            para x de 1 ate 5 faca
                                 vetores[cont,x] := vetA[x]
                            fimpara
                            escrevaL("volantes",cont,"=:",vetA[1],vetA[2],vetA[3],vetA[4],vetA[5])
                        fimse

                    fimpara
                fimpara
            fimpara
        fimpara
    fimpara
    escreval("reduzidos:", cont)
    escreval("total gerados:", total)

fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado Leonardo foi de grande ajuda. mais a sequencia está furada, veja que se eu escolher 8 números para formar conjuntos 5 em 5, o total da 56 volantes, aplicando a redução para se ter 3 acerto, o código apresentar o seguinte resultado:

1 2 3 4 5
1 2 3 6 7
1 2 4 6 8
1 2 5 7 8
1 3 4 7 8
1 3 5 6 8
1 4 5 6 7

as seguintes sequencias no reduzido só tem 2 acerto:> 2 3 8; 247;256;346;357;367;378;458;678

Bem a sua logica não esta errada, porque você está olhando para o sorteio que são 5 dezenas, conferindo com as 5, assim vai esta contigo o conjunto de 3, mais como o objetivo e ter apenas os 3 o algoritmo precisa de uma modificação.

Editado por Joelson Silva
diferença no código
Link para o comentário
Compartilhar em outros sites

  • 0

Leonardo meu querido a sequencia ainda esta furada, mais a matriz abaixo ela

atinge o objetivo, tem todas as sequencias de 3.

1 2 3 4 6
1 2 3 5 8
1 2 4 7 8
1 3 6 7 8
1 4 5 6 7
2 3 4 5 7
2 5 6 7 8
3 4 5 6 8

Talvez para se atinge a matriz acima seja o esquema abaixo, como ela foi feita deslocando as combinações, assim cada dezena tem as mesma quantidade a 1 repete 5 vezes e assim por diante, de mais essa analisada me diga qual o melhor caminho.

 obrigado.

um abraço.

 

Editado por Joelson Silva
CORREÇÃO
Link para o comentário
Compartilhar em outros sites

  • 0

Eu ainda não consegui entender o que você quer fazer com esse algorítimo até agora eu entendi que:

1- O usuário digita o número da maior dezena
2- O sistema gera conjuntos de 5 dezenas
3- O sistema descarta conjuntos com mais de 3 dezenas iguais á outros conjuntos

Se não for isso explique melhor, de maneira sucinta

Editado por Leonardo Persan
Link para o comentário
Compartilhar em outros sites

  • 0

Leonardo 

http://loteriaeconomica.blogspot.com/2011/07/minimos-matematicos.html

eu coloquei endereço acima, para você entender melhor,  o padrão abaixo de como aplicar, ou seja o código ele atinge condição é não a garantia. 

V = Total de dezenas da matriz
K = Tamanho dos blocos (qtd de dezenas do bilhete)
T = Garantia
M = Condição

V=:8

K=:5

T:=3

M:=3

 

aqui tá todas as sequencias de três : 123, 124, 125, 126, 127, 128, 134, 135, 136, 137, 138, 145, 146, 147, 148, 156, 157, 158, 167, 168, 178, 234, 235, 236, 237, 238, 245, 246, 247, 248,  256, 257, 258, 267, 268, 278, 345, 346, 347, 348, 356, 357, 358, 367, 368, 378, 456, 457, 458, 467, 468, 478, 567, 568, 578, 678. 

A matriz abaixo, possui pelo menos 01 volante com a garantia de 3 acertos iguais, ou seja se você procurar qualquer conjunto da sequencia acima você acha na matriz abaixo, foi o que eu não conseguir atingir.

12346

12358

12478

13678

14567

23457

25678

34568

duvidas é só chamar, aguardo sua resposta.

abraço.

Editado por Joelson Silva
Mais uma Correção
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...