Jump to content
Fórum Script Brasil
  • 0

ordenação


Question

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

Edited by Joelson Silva
Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to post
Share on other 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.

Edited by Joelson Silva
diferença no código
Link to post
Share on other 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.

 

Edited by Joelson Silva
CORREÇÃO
Link to post
Share on other 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

Edited by Leonardo Persan
Link to post
Share on other sites
  • 0
Posted (edited)

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.

Edited by Joelson Silva
Mais uma Correção
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148886
    • Total Posts
      644943
×
×
  • Create New...