Ir ao conteúdo
  • Cadastre-se

VisualG mega sena vetores visualg


Posts recomendados

Ola a todos, estou aprendendo Lógica de Programação e estou tentando desenvolver por conta um algoritmo de Mega Sena usando vetores.

Porém, não sei como fazer para na hora do sorteio não repetir números, sortear de 1 a 60 em vez de 0 a 60, e não deixar o usuário colocar números que não sejam entre 1 a 60.

 

Eu coloquei para automaticamente fornecer os números desejados para ficar mais fácil de testar, porque toda hora ter que ficar botando os numero é osso.

 

Eu também queria aprender a como pegar o resultado destes vetores e comparar com o vetores do sorteio e dependendo do resultado dar parabéns.

algoritmo "Mega Sena"
// Função :    sortear numeros
// Autor : PAULO RAZ3N
// Data : 05/11/2019
// Seção de Declarações INCOMPLETO, QUERO APRENDER A NÃO DEIXAR NUMEROS REPETIDOS
var
   NUM_ALE : vetor [1..6] de inteiro
   NUM : vetor [1..6] de inteiro
   NUM_ESC, NUM_ESC1, AUX, AUX1, SORTEADON, SORTEADON1: inteiro

inicio
   //PESSOA VAI DIGITAR NUMEROS
   escrevaL("===============================================")
   escreval("===================MEGA SENA===================")
   escrevaL("===============================================")
   escreval("Digite 6 numeros de 1 á 60:")
   para NUM_ESC de 1 ate 6 faca
      aleatorio on
      leia(NUM[NUM_ESC])
      aleatorio off
   fimpara
   escrevaL("===============================================")
   escrevaL("===============================================")
   limpatela
   
   //ISTO VAI ORGANIZAR OS NUMERO EM CRESCENTE
   para NUM_ESC de 1 ate 5 faca
      para NUM_ESC1 de NUM_ESC +1 ate 6 faca
         se NUM[NUM_ESC] > NUM[NUM_ESC1] entao
            AUX <-NUM[NUM_ESC1]
            NUM[NUM_ESC1] <- NUM[NUM_ESC]
            NUM[NUM_ESC] <- AUX
         fimse
      fimpara
   fimpara

   //VAI MOSTRAR OS NUMEROS NA TELA
   escrevaL("===============================================")
   escreval("===================MEGA SENA===================")
   escrevaL("===============================================")
   escreval()
   escreval()
   escrevaL("===============================================")
   escreva("Os numeros escolhidos foram: ")
   para NUM_ESC de 1 ate 6 faca
      escreva(NUM[NUM_ESC])
   fimpara
   escreval()
   escrevaL("===============================================")

   //RANDOMIZAR NUMEROS
   para SORTEADON DE 1 ate 6 faca
      NUM_ALE [SORTEADON] <- RANDI(60+1)
   fimpara

   //ORGANIZAR E PRINTAR NUMEROS ALEATORIOS   resultado da mega
   escreval()
   escreval()
   escrevaL("===============================================")
   escreva("Os numeros sorteados foram: ")
   para SORTEADON de 1 ate 6 faca
      para SORTEADON1 de SORTEADON +1 ate 6 faca
         se NUM_ALE[SORTEADON] > NUM_ALE[SORTEADON1] entao
            AUX1 <-NUM_ALE[SORTEADON1]
            NUM_ALE[SORTEADON1] <- NUM_ALE[SORTEADON]
            NUM_ALE[SORTEADON] <- AUX1
         fimse
      fimpara
      escreva(NUM_ALE[SORTEADON])
   fimpara
   escreval()
   escrevaL("===============================================")
fimalgoritmo

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Paulo Ricardo da Silva    seu código está bom , faltou apenas verificar quantos números acertou , então seu código com algumas modificações poderia ser assim  :

algoritmo "Mega Sena"
// Função :    sortear numeros
// Autor : PAULO RAZ3N
// Data : 05/11/2019
// Seção de Declarações INCOMPLETO, QUERO APRENDER A NÃO DEIXAR NUMEROS REPETIDOS
var
  NUM_ALE,NUM,res              : vetor [1..6] de inteiro
  NUM_ESC, NUM_ESC1, AUX, AUX1 : inteiro
  SORTEADON, SORTEADON1,a,j,i  : inteiro
  achou ,sair                  : logico
  op                           : caractere
inicio
  repita
    sair := falso
    //PESSOA VAI DIGITAR NUMEROS
    escrevaL("===============================================")
    escreval("===================MEGA SENA===================")
    escrevaL("===============================================")
    escreval("Digite 6 numeros de 1 á 60:")
    para NUM_ESC de 1 ate 6 faca
      repita
        aleatorio on  // remover esse aqui , para o usuario digitar os números
        repita
          achou := falso
          leia(NUM[NUM_ESC])
          se ( NUM[NUM_ESC] < 1 ) ou (NUM[NUM_ESC] > 60 ) entao // verifica se números estão na faixa certa
            achou := verdadeiro
          fimse
        ate nao achou
        aleatorio off // remover esse aqui , para o usuario digitar os números
        achou := falso
        para a de 1 ate 6 faca
          se ( NUM[NUM_ESC] = NUM[a]) e (NUM_ESC <> a ) entao // verifica se já tem esse número no vetor
            achou := verdadeiro  // + de 1 teste precisa de parenteses
            interrompa
          fimse
        fimpara
      ate nao achou  // se número for repetido repete
    fimpara
    escrevaL("===============================================")
    escrevaL("===============================================")
    limpatela
    //ISTO VAI ORGANIZAR OS NUMERO EM CRESCENTE
    para i de 1 ate 5 faca // é comum usar essas variáveis para percorrer loop
      para j de i+1 ate 6 faca
        se NUM[ i ] > NUM[ j ] entao
          AUX <- NUM[ j ]
          NUM[ j ] <- NUM[ i ]
          NUM[ i ] <- AUX
        fimse
      fimpara
    fimpara
    //VAI MOSTRAR OS NUMEROS NA TELA
    escrevaL("===============================================")
    escreval("===================MEGA SENA===================")
    escrevaL("===============================================")
    escreval
    escreval
    escrevaL("===============================================")
    escreva("Os numeros escolhidos foram: ")
    para NUM_ESC de 1 ate 6 faca
       escreva(NUM[NUM_ESC])
    fimpara
    escreval
    escrevaL("===============================================")
    //RANDOMIZAR NUMEROS
    para SORTEADON DE 1 ate 6 faca
      repita
        achou := falso
        NUM_ALE [SORTEADON] <- RANDI(60) + 1
        para j de 1 ate 6 faca
          se ( NUM_ALE[SORTEADON] = NUM_ALE[j] ) e ( SORTEADON <> j ) entao
            achou := verdadeiro
            interrompa
          fimse
        fimpara
      ate nao achou
    fimpara
    //ORGANIZAR E PRINTAR NUMEROS ALEATORIOS   resultado da mega
    escreval
    escreval
    escrevaL("===============================================")
    escreva("Os numeros sorteados foram: ")
    para i de 1 ate 6 faca
      para j de i +1 ate 6 faca
        se NUM_ALE[i] >  NUM_ALE[j] entao
           AUX        <- NUM_ALE[j]
           NUM_ALE[j] <- NUM_ALE[i]
           NUM_ALE[i] <- AUX
        fimse
      fimpara
      escreva(NUM_ALE[i])
    fimpara
    escreval
    escrevaL("===============================================")
    a := 1
    para i de 1 ate 6 faca
      para j de 1 ate 6 faca
        se ( NUM[i] = NUM_ALE[j]) e ( i <> j ) entao
          res[a] := NUM[i]
          a := a + 1
          interrompa
        fimse
      fimpara
    fimpara
    a := a - 1
    se a = 3 entao // se acertou a trinca
      escreval("Você acertou três números !")
    senao
      se a = 4 entao
        escreval("Você Acertou Quatro Números . . . !")
      senao
        se a = 5 entao
          escreval("Que Bom !  Você Acerou Cinco Números . . . !")
        senao
          se a = 6 entao
            escreval("Parabéns , Você Acertou A Sena . . . ! !")
          senao
            se a = 2 entao
              escreval("Você Acertou Dois Números !")
            senao
              se a = 1 entao
                escreval("Você Acertou Apenas Hum Número !")
              senao
                escreval("Que Pena , Você Não Acertou Nenhum Número !")
              fimse
            fimse
          fimse
        fimse
      fimse
    fimse
    escreval("Quer Fazer Outra Aposta S/N  Tecle Enter Para SIM")
    leia( op )
    se maiusc( op ) = "N" entao
      sair := verdadeiro
    fimse
  ate sair
fimalgoritmo

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...